Функции PHP preg_match и preg_match_all

Я хотел бы знать, что делают функции preg_match и preg_match_all и как их использовать.

preg_match перестает preg_match за первым матчем. preg_match_all , с другой стороны, продолжает смотреть, пока не завершит обработку всей строки. Как только совпадение найдено, он использует оставшуюся часть строки, чтобы попытаться применить другое соответствие.

http://php.net/manual/en/function.preg-match-all.php

Конкретный пример:

 preg_match("/find[ ]*(me)/", "find me find me", $matches): $matches = Array( [0] => find me [1] => me ) preg_match_all("/find[ ]*(me)/", "find me find me", $matches): $matches = Array( [0] => Array ( [0] => find me [1] => find me ) [1] => Array ( [0] => me [1] => me ) ) preg_grep("/find[ ]*(me)/", ["find me find me", "find me findme"]): $matches = Array ( [0] => find me find me [1] => find me findme ) 

Обе функции preg_match и preg_match_all в PHP используют регулярные выражения, совместимые с Perl.

Вы можете посмотреть эту серию, чтобы полностью понять регулярные выражения, совместимые с Perl: https://www.youtube.com/watch?v=GVZOJ1rEnUg&list=PLfdtiltiRHWGRPyPMGuLPWuiWgEI9Kp1w

preg_match ($ pattern, $ subject, & $ matches, $ flags, $ offset)

Функция preg_match используется для поиска определенного $pattern в строке $subject и когда шаблон найден в первый раз, он перестает его искать. Он выводит совпадения в совпадениях $matches , где $matches[0] будет содержать текст, который соответствует полному шаблону, $matches[1] будет иметь текст, который соответствует первому захваченному скобке в скобках и т. Д.

Пример preg_match()

 <?php preg_match( "|<[^>]+>(.*)</[^>]+>|U", "<b>example: </b><div align=left>this is a test</div>", $matches ); var_dump($matches); 

Вывод:

 array(2) { [0]=> string(16) "<b>example: </b>" [1]=> string(9) "example: " } 

preg_match_all ($ pattern, $ subject, & $ matches, $ flags)

Функция preg_match_all выполняет поиск всех совпадений в строке и выводит их в многомерном массиве ( $matches ), упорядоченном по $flags . Когда значение $flags не передается, оно упорядочивает результаты, так что $matches[0] представляет собой массив совпадений полного шаблона, $matches[1] – это массив строк, совпадающих с первым скоблением в скобках и т. Д.

Пример preg_match_all()

 <?php preg_match_all( "|<[^>]+>(.*)</[^>]+>|U", "<b>example: </b><div align=left>this is a test</div>", $matches ); var_dump($matches); 

Вывод:

 array(2) { [0]=> array(2) { [0]=> string(16) "<b>example: </b>" [1]=> string(36) "<div align=left>this is a test</div>" } [1]=> array(2) { [0]=> string(9) "example: " [1]=> string(14) "this is a test" } } 

Руководство по PHP может вам помочь.

  • preg_match
  • preg_match_all

Сообщите нам, если у вас возникли проблемы с пониманием.