Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Подскажите, пожалуйста

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Pavelbeginner
Отправлено: 01 Мая, 2010 - 00:21:06
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 882
Дата рег-ции: Март 2010  


Помог: 1 раз(а)




сначала я присваюиваю переменной $content все данные из файла, а в файле они записаны так
привет1: bla1
привет2: bla2
привет3: bla3


мне нужно, чтобы нашло ключ => значение
вот мой код

PHP:
скопировать код в буфер обмена
  1. preg_match_all('/(.*[^:]):([^:].*)/i', $content, $matches);
  2. foreach($matches[0] as $key => $data)
  3.    $result[trim($matches[1][$key])] = trim($matches[2][$key]);
  4. print_r ($result);
  5.  


если данные записаны так, как я указал в начала, то вернёт следующее
['привет1'] => bla1
['привет2] => bla2
['привет3'] => bla3
но, если данные в файле записаны так


привет1: bla1
привет2: bla2
привет3: bla3
: bla4

то мне вернёт

['привет1'] => bla1
['привет2] => bla2
['привет3: bla3'] => bla4

В чём моя ошибка? Мне нужно, чтобы проверяло кажду строку вот так "ключ : значение"
и если совпадение не найдено, то переходило к следующей строке. Почему же тогда не было найдено совпадение "['привет3'] => bla3", а нашло вместо этого "['привет3: bla3'] => bla4"


Отредактировано модератором: movEAX, 01 Мая, 2010 - 08:29:10
 
 Top
Мелкий Супермодератор
Отправлено: 01 Мая, 2010 - 00:36:22
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




А не проще?
PHP:
скопировать код в буфер обмена
  1. $content = file("файл");
  2. foreach ($content as $line) {
  3. $tmp = explode(":",trim($line));
  4. $result[$tmp[0]] = $tmp[1];
  5. }


-----
PostgreSQL DBA
 
 Top
Pavelbeginner
Отправлено: 01 Мая, 2010 - 01:21:51
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 882
Дата рег-ции: Март 2010  


Помог: 1 раз(а)




то что надо, спасибо.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Регулярные выражения »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB