International PHP Conference Berlin 2025

Предопределённые константы

Модуль определяет перечисленные константы и открывает доступ к константам только тогда, когда модуль либо собрали в PHP, либо динамически загрузили во время исполнения кода.

Константы PREG
Константы Описание С версии
PREG_PATTERN_ORDER (int) Меняет порядок элементов в результирующем массиве так, чтобы элемент $matches[0] содержал полные вхождения шаблона, элемент $matches[1] — каждое вхождение первой подмаски в круглых скобках и т. д. Этот флаг указывают только при вызове функции preg_match_all().  
PREG_SET_ORDER (int) Меняет порядок элементов в результирующем массиве так, чтобы элемент $matches[0] содержал первый набор вхождений (полное вхождение, вхождение первой подмаски, заключённой в круглые скобки...), аналогично элемент $matches[1] — второй набор вхождений и т. д. Этот флаг указывают только при вызове функции preg_match_all().  
PREG_OFFSET_CAPTURE (int) Смотрите описание флага PREG_SPLIT_OFFSET_CAPTURE.  
PREG_SPLIT_NO_EMPTY (int) С этим флагом функция preg_split() вернёт только непустые подстроки.  
PREG_SPLIT_DELIM_CAPTURE (int) С этим флагом функция preg_split() также возвращает выражение, которое в шаблоне разделителя заключили в круглые скобки.  
PREG_SPLIT_OFFSET_CAPTURE (int) С этим флагом функция укажет для каждой подстроки, которую нашла, позицию в исходной строке. Когда указывают этот флаг, учитывают, что флаг меняет формат данных, которые возвращает функция: каждое вхождение возвращается как массив, в нулевом элементе которого содержится найденная подстрока, а в первом — смещение. Этот флаг указывают только при вызове функции preg_split().  
PREG_UNMATCHED_AS_NULL (int) Этот флаг указывает функциям preg_match() и preg_match_all() включать несовпадающие подмаски в переменной $matches в виде значений null. Без этого флага несовпадающие подмаски отображаются как пустые строки, как если бы функция не нашла совпадений. Установка этого флага разрешает проводить различие между двумя этими случаями. 7.2.0
PREG_NO_ERROR (int) Возвращается функцией preg_last_error(), если нет ошибок. 5.2.0
PREG_INTERNAL_ERROR (int) Возвращается функцией preg_last_error(), если возникла внутренняя ошибка модуля PCRE. 5.2.0
PREG_BACKTRACK_LIMIT_ERROR (int) Возвращается функцией preg_last_error(), если исчерпался лимит обратных ссылок. 5.2.0
PREG_RECURSION_LIMIT_ERROR (int) Возвращается функцией preg_last_error(), если исчерпался лимит рекурсии. 5.2.0
PREG_BAD_UTF8_ERROR (int) Возвращается функцией preg_last_error(), если последнюю ошибку вызвали неправильные UTF-8-данные (только при запуске регулярного выражения в режиме UTF-8). 5.2.0
PREG_BAD_UTF8_OFFSET_ERROR (int) Возвращается функцией preg_last_error(), если смещение не соответствует началу допустимой кодовой точки кодировки UTF-8 (только при запуске в режиме UTF-8). 5.3.0
PREG_JIT_STACKLIMIT_ERROR (int) Возвращается функцией preg_last_error(), если последняя функция модуля PCRE завершилась неудачно из-за лимита JIT-стека. 7.0.0
PCRE_VERSION (string) Версия и дата релиза модуля PCRE (например, «7.0 18-Dec-2006»). 5.2.4
PCRE_VERSION_MAJOR (int) Номер мажорной версии модуля PCRE.  
PCRE_VERSION_MINOR (int) Номер минорной версии модуля PCRE.  
PCRE_JIT_SUPPORT (bool) Указывает, доступна ли для модуля PCRE поддержка JIT-компиляции.  
PREG_GREP_INVERT (int) Возвращает элементы, которые не соответствуют шаблону.  
Добавить

Примечания пользователей 2 notes

up
27
erutan409 at hotmail dot com
9 years ago
PREG_PATTERN_ORDER: 1
PREG_SET_ORDER: 2
PREG_OFFSET_CAPTURE: 256
PREG_SPLIT_NO_EMPTY: 1
PREG_SPLIT_DELIM_CAPTURE: 2
PREG_SPLIT_OFFSET_CAPTURE: 4
PREG_NO_ERROR: 0
PREG_INTERNAL_ERROR: 1
PREG_BACKTRACK_LIMIT_ERROR: 2
PREG_RECURSION_LIMIT_ERROR: 3
PREG_BAD_UTF8_ERROR: 4
PREG_BAD_UTF8_OFFSET_ERROR: 5
PCRE_VERSION: %YOUR_VERSION_NUMBER%
up
13
Robert
8 years ago
The new PREG_JIT_STACKLIMIT_ERROR constant introduced with PHP 7.0.0 has got a value of 6.

I experienced this error code when parsing a 112KB file. preg_match_all failed with this error. Interesting was: The matches array contained some entries, but not all as the command failed (I missed to check the return value).

Unfortunately you can not configure the stack-size of the PCRE JIT. The only way out was - at least for me - to disable the PCRE JIT via php.ini (pcre.jit=0).
To Top