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
Форумы портала PHP.SU :: Версия для печати :: Подскажите, пожалуйста
Форумы портала PHP.SU » PHP » Регулярные выражения » Подскажите, пожалуйста

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

1. Pavelbeginner - 01 Мая, 2010 - 00:21:06 - перейти к сообщению
сначала я присваюиваю переменной $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"
2. Мелкий - 01 Мая, 2010 - 00:36:22 - перейти к сообщению
А не проще?
PHP:
скопировать код в буфер обмена
  1. $content = file("файл");
  2. foreach ($content as $line) {
  3. $tmp = explode(":",trim($line));
  4. $result[$tmp[0]] = $tmp[1];
  5. }
3. Pavelbeginner - 01 Мая, 2010 - 01:21:51 - перейти к сообщению
то что надо, спасибо.

 

Powered by ExBB FM 1.0 RC1