Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

Превращение форматированной строки в массив (Юрий Насретдинов)
Author Message
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 198
   поощрить/наказать

Location: 007 495

PostPosted: Thu Dec 25, 2003 4:38 pm ()
   Post subject: Превращение форматированной строки в массив
Reply with quote

Code (php): скопировать код в буфер обмена
function str2ar($string,$ex1=";",$ex2="=") //convert string to array
{
        $part=explode (www.php.net/explode)($ex1,$string);
        //**
        $result=array (www.php.net/array)();
        //**
        foreach($part as $key=>$value)
        {
                $tmp=explode (www.php.net/explode)($ex2,trim (www.php.net/trim)($value));
                if(!empty (www.php.net/empty)($value)) $result[trim (www.php.net/trim)($tmp[0])]=trim (www.php.net/trim)($tmp[1]);
        }
        return $result;
}
Эта функция превращает форматированную строку в массив:

"foo=bar; key=value; name=vasya; email=vasya@pupkin.ru;"

Превращает в массив типа:
'foo' => 'bar',
'key' => 'value',
'name' => 'vasya',
'email' => 'vasya@pupkin.ru'

Разделители можно указать соответственно вторым и третьим аргументом.
Back to top
View user's profile Send private message Send e-mail
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Sun Mar 14, 2004 7:36 pm (спустя 2 месяца 20 дней 2 часа 57 минут)
   Post subject:
Reply with quote


!

Бу.
Back to top
View user's profile Send private message Send e-mail
Guest






Карма: 388
   поощрить/наказать


PostPosted: Sat Feb 25, 2006 1:07 pm (спустя 1 год 11 месяцев 10 дней 17 часов 31 минуту; написано за 7 минут 15 секунд)
   Post subject:
Reply with quote

Простите, что раскапываю старую тему... Просто решал подобную задачу и столкнулся с интересной особенностью. Интересно ваше мнение.

Допустим, у нас следующая последоватьельность:
"foo=bar; key=;"

тогда на выходе представленной функции будет:
'foo' => 'bar'
'key' => ''


А если вот так:
"foo=bar; =value;"

то функция выдаст:
'foo' => 'bar'
'' => 'value'


Меня интересует Ваше мнение по второму случаю. Допустимо ли, или, так скажем, идеологически верно ли, что в результирующем списке параметров может проскочить "пустой ключ"? Верна ли такая позиция, или все-таки стоит удалять пустые ключи, независимо от значения? Как считаете?

Если да, то, думаю, следующую функцию можно немножко модернизировать:

вместо:
Code (php): скопировать код в буфер обмена
if(!empty (www.php.net/empty)($value)) $result[trim (www.php.net/trim)($tmp[0])]=trim (www.php.net/trim)($tmp[1]);
использовать:
Code (php): скопировать код в буфер обмена
if(!empty (www.php.net/empty)($value) && !empty (www.php.net/empty)(trim (www.php.net/trim)($tmp[0]))) $result[trim (www.php.net/trim)($tmp[0])]=trim (www.php.net/trim)($tmp[1]);
чтобы исключить "пустые" ключи.
Back to top
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 198
   поощрить/наказать

Location: 007 495

PostPosted: Sat Feb 25, 2006 4:01 pm (спустя 2 часа 54 минуты; написано за 13 секунд)
   Post subject:
Reply with quote

Гость wrote:
!empty(trim($tmp[0]))
По-моему, такая штука выдаст синтаксическую ошибку.
Back to top
View user's profile Send private message Send e-mail
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Page 1 of 1    Email to a Friend.
You cannot post new topics in this forum. You cannot reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
XML