|
LXXXVII. Функции регулярных выражений (Perl-совместимые)
Синтаксис патэрнов, используемый в этих функциях, очень напоминает
Perl. Выражение должно быть заключено в ограничители, слэши (/), например.
В качестве ограничителей могут использоваться любые символы, кроме не
алфавитных символов, цифр и обратного слэша (\). Если символ ограничителя должен использоваться в самом выражении,
он должен мнемонизироваться/escape обратным слэшем. Начиная с PHP 4.0.4, вы можете также использовать парные ограничители в стиле
Perl: (), {}, [] и <>.
После конечного ограничителя могут идти различные модификаторы, влияющие на подстановку.
См. Модификаторы патэрна.
PHP также поддерживает регулярные выражения, использующие расширенный синтаксис POSIX с функциями
POSIX-extended regex.
Поддержка регулярных выражений предоставляется пакетом библиотеки PCRE,
который является открытым ресурсом, автор Philip Hazel,
и copyright University of Cambridge, England. Он находится на
ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/
Начиная с PHP 4.2.0, эти функции по умолчанию включены.
В более старых версиях вы должны конфигурировать и компилировать PHP
с опцией --with-pcre-regex[=DIR], чтобы использовать эти функции. Вы можете отменить функции pcre опцией
--without-pcre-regex.
Это расширение не определяет никаких директив конфигурации.
Это расширение не определяет никакие типы ресурсов.
Таблица 1. PREG-константы
константа |
описание |
PREG_PATTERN_ORDER |
Оформляет результат таким образом, что $matches[0] является массивом
совпадений всего патэрна, $matches[1] это массив строк, совпавших с
первым субпатэрном в кавычках, и так далее. Этот флаг используется только с
preg_match_all()
. |
PREG_SET_ORDER |
Оформляет результат таким образом, что $matches[0] это массив первого набора совпадений, $matches[1] это массив второго набора совпадений, и
так далее. Этот флаг используется только с
preg_match_all()
. |
PREG_OFFSET_CAPTURE |
См. описание
PREG_SPLIT_OFFSET_CAPTURE
. Этот флаг
доступен, начиная с PHP 4.3.0. |
PREG_SPLIT_NO_EMPTY |
Этот флаг говорит функции
preg_split()
- возвращать только непустые участки. |
PREG_SPLIT_DELIM_CAPTURE |
Этот флаг говорит функции
preg_split()
- захватывать выражение в скобках также в патэрне ограничителе. Этот флаг доступен, начиная с PHP 4.0.5. |
PREG_SPLIT_OFFSET_CAPTURE |
Если этот флаг установлен, для каждого возникающего совпадения будет
возвращаться также смещение прибавляемой строки. Обратите внимание, что
это изменяет return-значение в массиве, где элемент является массивом,
состоящим из совпавшей строки со смещением 0 и смещения его строки
в субъекте со смещением 1. Этот флаг доступен, начиная с PHP 4.3.0, и используется только для
preg_split()
. |
Пример 1. Примеры верных патэрнов
-
/<\/\w+>/
-
|(\d{3})-\d+|Sm
-
/^(?i)php[34]/
-
{^\s+(\s+)?$}
|
Пример 2. Примеры неправильных патэрнов
-
/href='(.*)' - отсутствует конечный ограничитель
-
/\w+\s*\w+/J - неизвестный модификатор 'J'
-
1-\d3-\d3-\d4| - пропущен начальный ограничитель
|
-
Содержание
-
Модификаторы Патэрна - описаны
возможные модификаторы в regex-патэрнах
-
Синтаксис Патэрна - описан синтаксис PCRE regex
-
preg_grep - возвращает вхождения массива, совпадающие с патэрном
-
preg_match_all - выполняет глобальный поиск совпадений регулярного выражения
-
preg_match - выполняет поиск совпадений регулярного выражения
-
preg_quote - закавычивает символы регулярного выражения
-
preg_replace_callback - выполняет поиск регулярного выражения и замену с использованием обратного
вызова/callback
-
preg_replace - выполняет поиск регулярного выражения и замену
-
preg_split - делит строку регулярным выражением
|
|