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

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

1. black_ru - 10 Июля, 2011 - 14:10:30 - перейти к сообщению
Как вывести всю строку со словом, которое было найдено в массиве?
CODE (htmlphp):
скопировать код в буфер обмена
  1. if (preg_match_all("/слово/i", "$text_of_file", $out)) {
  2. echo $out[0][0]  ;
  3.  }
2. Champion - 10 Июля, 2011 - 14:37:22 - перейти к сообщению
"Это чтоб из вот такой строки" регулярка "/вот/" дала не "вот", а всю строку?
Надо регулярку переписать: /^.*?вот.*$/mi
3. black_ru - 10 Июля, 2011 - 15:22:17 - перейти к сообщению
Ага, спасибо.
А как вывести все найденные?
4. vsll - 10 Июля, 2011 - 15:25:29 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. for ($i=0; $i< count($matches[0]); $i++) {
  2.   echo "matched: " . $matches[0][$i] . "\n";
  3.   echo "part 1: " . $matches[1][$i] . "\n";
  4.   echo "part 2: " . $matches[3][$i] . "\n";
  5.   echo "part 3: " . $matches[4][$i] . "\n\n";
  6. }
пример из мануала
http://www.php.su/functions/?preg_match_all
5. LIME - 10 Июля, 2011 - 15:34:43 - перейти к сообщению
Vasiliya пишет:
пример из мануала
!!!!!
6. black_ru - 10 Июля, 2011 - 15:49:19 - перейти к сообщению
А точно, цикл.
Я думал, как-то по другому можно


Спасибо .
Вопрос решен.
7. Champion - 10 Июля, 2011 - 15:58:23 - перейти к сообщению
ну можно не циклом. Можно var_dump($array), можно просто echo $array[1], $array[2] - dj сколько вариантов
8. black_ru - 10 Июля, 2011 - 17:58:45 - перейти к сообщению
var_dump($matches)) тоже интересно, только в этом случае, похоже ,придется вырезать при помощи preg_replace все эти

(Добавление)
А вывод var_dump($matches)) можно в переменную свести, чтобы потом еще раз применить preg_replace?
9. Champion - 10 Июля, 2011 - 18:46:12 - перейти к сообщению
black_ru пишет:
ридется вырезать при помощи preg_replace все эти
И потом снова выводить var_dump-ом?) Не надо этим заниматься, это может занять бесконечное время.
black_ru пишет:
вывод var_dump($matches)) можно в переменную свест
Если воспользоваться var_export с вторым параметром, равным true, то можно записать в переменную. А еще можно прользоваться ob_get_contents().
10. LIME - 10 Июля, 2011 - 18:46:51 - перейти к сообщению
black_ru пишет:
А вывод var_dump($matches)) можно в переменную свести, чтобы потом еще раз применить preg_replace?

а можно сначала попробовать это сделать?
или вы разрешения спрашиваете?
11. vsll - 10 Июля, 2011 - 18:48:22 - перейти к сообщению
извращенцы )
12. black_ru - 10 Июля, 2011 - 18:52:03 - перейти к сообщению
Ну вот как-то так можно? У меня не выходит пока
CODE (htmlphp):
скопировать код в буфер обмена
  1. $string = var_dump($matches);
  2. $pattern = "/Хрен/i";
  3. $replacement = "Редька";
  4. echo preg_replace($pattern, $replacement, $string));
  5.  

(Добавление)
А, ну то есть var_dump подразумевает, что в памяти ничего не осталось,
поэтому и нужен var_export?

P.S.
Все понял....
Спасибо
13. Champion - 10 Июля, 2011 - 19:21:56 - перейти к сообщению
black_ru, пора прочитать описание обсуждаемых функций
14. black_ru - 10 Июля, 2011 - 19:52:48 - перейти к сообщению
Champion да спасибо.

CODE (htmlphp):
скопировать код в буфер обмена
  1. $string = var_export($matches, true);
  2. $pattern[0] = "/=>/";
  3. $pattern[1] = "/[')(,*0-9]/";
  4. $pattern[2] = "/array/";
  5. $replacement[0] = "<br>";
  6. $replacement[1] = "";
  7. $replacement[2] = "";
  8. echo preg_replace($pattern, $replacement, $string);
  9.  

прикольно, из того же мана, получается можно как угодно изменить вывод Улыбка
Пойду читать дальше.
15. black_ru - 11 Июля, 2011 - 01:35:24 - перейти к сообщению
Последнее хочу просить:
Я правильно добавляю, чтобы искать только целое слово в строке и выводить всю?
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. (preg_match_all("/^.*?\b$srch\b.*/mi", $myfile, $matches))
  3.  

Почему-то сразу перестает искать слова с русскими символами.

 

Powered by ExBB FM 1.0 RC1