Синтакcис шаблонов, используемых в функциях этого раздела, во многом похож на
синтаксис, используемый в Perl. Выражение должно быть заключено в ограничители,
например, прямые слеши '/'. Ограничителем могут выступать произвольные символы, кроме
буквенно-цифровых и обратного слеша '\'. Если ограничительный символ встречается в
шаблоне, его необходимо экранировать. Начиная с PHP 4.0.4 в качестве ограничителя
доступны комбинации, используемые в Perl: (), {}, [] и <>. Подробней
об этом рассказано в разделе Синтаксис регулярных выражений.
После закрывающего ограничителя можно указывать различные модификаторы,
влияющие на работу регулярных выражений.
Детальная информация доступна в разделе
Модификаторы шаблонов.
PHP также поддерживает POSIX-совместимые регулярные выражения, используя
соответствующий модуль.
Поддержка Perl-совместимых регулярных выражений реализована в соответствующей
PCRE библиотеке, которая распространяется с открытым исходным кодом.
Автором библиотеки является Philip Hazel, авторские права принадлежат
кембриджскому университету, Англия. Исходный код доступен по ссылке
ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/.
Внимание
Также вы должны учитывать некоторые ограничения PCRE. Ознакомьтесь с
http://www.pcre.org/pcre.txt для получения более
полной информации.
Начиная с PHP 4.2.0, Perl-совместисмые регулярные выражения (PCRE) доступны по умолчанию. Вы можете
отключить их при помощи
--without-pcre-regex.
В случае, если вы хотите использовать библиотеку, отличную от идущей в стандартной
поставке РНР, используйте опцию
--with-pcre-regex=DIR
для указания директории, содержащей необходимые файлы.
Если у вас версия PHP менее, чем 4.2.0, вам необходимо сконфигурировать и
пересобрать PHP с опцией
--with-pcre-regex[=DIR],
чтобы включить поддержку PCRE-функций.
Версия PHP для
Windows имеет встроенную поддержку данного расширения. Это означает, что
для использования данных функций не требуется загрузка никаких
дополнительных расширений.
Перечисленные ниже константы определены данным расширением и могут быть
доступны только в том случае, если PHP был собран с
поддержкой этого расширения или же в том случае, если
данное расширение подгружается во время выполнения.
Таблица 1. PREG константы
константа
описание
PREG_PATTERN_ORDER
Меняет порядок элементов в результирующем массиве так, чтобы
элемент $matches[0] содержал полные вхождения шаблона,
элемент $matches[1] - все вхождения первой взятой в круглые скобки подмаски, и так далее.
Только reg_match_all() реагирует на данный модификатор;
остальными функциями он игнорируется.
PREG_SET_ORDER
Меняет порядок элементов в результирующем массиве так, чтобы
элемент $matches[0] содержал первый набор вхождений (полное вхождение,
вхождение первой подмаски, заключенной в круглые скобки...),
аналогично элемент $matches[1] - второй набор вхождений, и так далее.
Только reg_match_all() реагирует на данный модификатор;
остальными функциями он игнорируется.
PREG_OFFSET_CAPTURE
Смотрите описание флага
PREG_SPLIT_OFFSET_CAPTURE.
Данный флаг доступен в PHP 4.3.0 и выше.
PREG_SPLIT_NO_EMPTY
В случае, если этот флаг указан, функция preg_split()
вернет только непустые подстроки.
PREG_SPLIT_DELIM_CAPTURE
В случае, если этот флаг указан, выражение, заключенное в круглые скобки в
разделяющем шаблоне, также извлекается из заданной строки и возвращается
функцией. Этот флаг был добавлен в PHP 4.0.5.
PREG_SPLIT_OFFSET_CAPTURE
В случае, если этот флаг указан, для каждой найденной подстроки будет указана
ее позиция в исходной строке. Необходимо помнить, что этот флаг меняет
формат возвращаемых данных: каждое вхождение возвращается в виде массива,
в нулевом элементе которого содержится найденная подстрока, а в первом - смещение.
Этот флаг доступен в PHP 4.3.0 и выше и используется только в
функции preg_split().