Функция preg_last_error
Функция preg_last_error
возвращает код последней ошибки,
возникшей при работе с функциями для работы с регулярными выражениями.
Это полезно для отладки регулярных выражений, когда функции
вроде preg_match
или preg_replace
возвращают false
.
Функция не принимает параметров.
Функция возвращает целочисленный код ошибки. Для удобства можно сравнивать код ошибки со специальными константами (см. таблицу ниже).
Синтаксис
preg_last_error(): int;
Таблица с константами ошибок
Константа | Значение | Описание |
---|---|---|
PREG_NO_ERROR |
0 | Ошибок не произошло |
PREG_INTERNAL_ERROR |
1 | Внутренняя ошибка PCRE |
PREG_BACKTRACK_LIMIT_ERROR |
2 | Превышен лимит обратного отслеживания (backtrack limit) |
PREG_RECURSION_LIMIT_ERROR |
3 | Превышен лимит рекурсии |
PREG_BAD_UTF8_ERROR |
4 | Некорректные UTF-8 данные |
PREG_BAD_UTF8_OFFSET_ERROR |
5 | Смещение не соответствует началу корректного UTF-8 кода |
PREG_JIT_STACKLIMIT_ERROR |
6 | Превышен лимит стека JIT-компилятора |
Пример
Проверим ошибку после некорректного регулярного выражения:
<?php
preg_match('/invalid(regex/', 'test');
$error_code = preg_last_error();
echo $error_code;
?>
Результат выполнения кода:
4
Пример
Использование с константами ошибок PCRE:
<?php
preg_match('/(?:\D+/', 'abc123');
if (preg_last_error() === PREG_BACKTRACK_LIMIT_ERROR) {
echo 'Backtrack limit was exhausted';
}
?>
Результат выполнения кода:
'Backtrack limit was exhausted'
Смотрите также
-
функцию
preg_match
,
которая выполняет поиск по регулярному выражению -
функцию
preg_replace
,
которая выполняет замену по регулярному выражению -
функцию
preg_quote
,
которая экранирует специальные символы в регулярных выражениях