Описание функции preg-match-all
preg_match_all
(PHP 3>= 3.0.9, PHP 4)
preg_match_all - выполняет глобальный поиск совпадения регулярного выражения.
Описание
int preg_match_all (string pattern, string subject, array matches [, int flags])
Ищет в subject все совпадения с регулярным выражением pattern и помещает их в matches в порядке, специфицированном в order .
После нахождения первого совпадения последующий поиск продолжается до нахождения последнего совпадения.
flags может быть комбинацией следующих флагов (обратите внимание, что нет смысла использовать PREG_PATTERN_ORDER вместе с PREG_SET_ORDER ):
- PREG_PATTERN_ORDER
-
Упорядочивает результаты таким образом, что $matches[0] это массив полных совпадений с патэрном, $matches[1] это массив строк, совпавших с первым субпатэрном в скобках, и так далее.preg_match_all ("|<[^>]+>(.*)</[^>]+>|U", "<b>example: </b><div align=left>this is a test</div>", $out, PREG_PATTERN_ORDER); print $out[0][0].", ".$out[0][1]."\n"; print $out[1][0].", ".$out[1][1]."\n";
Этот пример выдаст:<b>example: </b>, <div align=left>this is a test</div> example: , this is a test
Итак, $out[0] содержит массив строк, совпавших со всем патэрном, а $out[1] содержит массив строк, заключённых в тэги. - PREG_SET_ORDER
-
Упорядочивает результаты таким образом, что $matches[0] это массив первого набора совпадений, $matches[1] это массив второго набора совпадений, и так далее.preg_match_all ("|<[^>]+>(.*)</[^>]+>|U", "<b>example: </b><div align=left>this is a test</div>", $out, PREG_SET_ORDER); print $out[0][0].", ".$out[0][1]."\n"; print $out[1][0].", ".$out[1][1]."\n";
Этот пример выдаст:<b>example: </b>, example: <div align=left>this is a test</div>, this is a test
В данном случае $matches[0] это первый набор совпадений, а $matches[0][0] содержит текст, совпавший с полным патэрном, $matches[0][1] содержит текст, совпавший с первым субпатэрном, и так далее. Аналогично $matches[1] это второй набор совпадений, etc. - PREG_OFFSET_CAPTURE
-
Если этот флаг установлен, для каждого возникшего совпадения будет возвращено дополнительное строковое смещение. Заметьте, что это изменяет return-значение в массиве, где каждый элемент является массивом, состоящим из совпавшей строки в смещении 0 и её строкового смещения в subject - в смещении 1 . Этот флаг доступен, начиная с PHP 4.3.0.
Если никакой флаг упорядочивания не задан, принимается PREG_PATTERN_ORDER .
Возвращает количество полных совпадений с патэрном (это может быть нуль), или FALSE при ошибке.
Пример 1. Получение всех телефонных номеров из текста.
|
Этот пример выдаст:
matched: <b>bold text</b> part 1: <b> part 2: bold text part 3: </b> matched: <a href= http://heel.org.ua/howdy.html>click me</a> part 1: <a href= http://heel.org.ua/howdy.html> part 2: click me part 3: </a> |
См. также preg_match() , preg_replace() и preg_split() .