АКЦИЯ: бесплатные месячные курсы по созданию сайтов
на выбор: верстка, JavaScript, PHP, Python или фреймворки. Сегодня последний день для записи! Жми!
208 of 410 menu
Новый формат обучения! Репетиторство по программированию. Есть еще 3 свободных места! Жми для подробностей.

Функция 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,
    которая экранирует специальные символы в регулярных выражениях
byenru