Функция 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,
която екранира специални символи в регулярни изрази