Funkcja preg_last_error
Funkcja preg_last_error zwraca kod ostatniego błędu,
który wystąpił podczas pracy z funkcjami do obsługi wyrażeń regularnych.
Jest to przydatne do debugowania wyrażeń regularnych, gdy funkcje
jak preg_match lub preg_replace zwracają false.
Funkcja nie przyjmuje parametrów.
Funkcja zwraca całkowity kod błędu. Dla wygody można porównywać kod błędu ze specjalnymi stałymi (patrz tabela poniżej).
Składnia
preg_last_error(): int;
Tabela ze stałymi błędów
| Stała | Wartość | Opis |
|---|---|---|
PREG_NO_ERROR |
0 | Nie wystąpił żaden błąd |
PREG_INTERNAL_ERROR |
1 | Wewnętrzny błąd PCRE |
PREG_BACKTRACK_LIMIT_ERROR |
2 | Przekroczony limit śledzenia wstecznego (backtrack limit) |
PREG_RECURSION_LIMIT_ERROR |
3 | Przekroczony limit rekurencji |
PREG_BAD_UTF8_ERROR |
4 | Nieprawidłowe dane UTF-8 |
PREG_BAD_UTF8_OFFSET_ERROR |
5 | Przesunięcie nie odpowiada początkowi prawidłowego kodu UTF-8 |
PREG_JIT_STACKLIMIT_ERROR |
6 | Przekroczony limit stosu kompilatora JIT |
Przykład
Sprawdźmy błąd po nieprawidłowym wyrażeniu regularnym:
<?php
preg_match('/invalid(regex/', 'test');
$error_code = preg_last_error();
echo $error_code;
?>
Wynik wykonania kodu:
4
Przykład
Użycie ze stałymi błędów PCRE:
<?php
preg_match('/(?:\D+/', 'abc123');
if (preg_last_error() === PREG_BACKTRACK_LIMIT_ERROR) {
echo 'Backtrack limit was exhausted';
}
?>
Wynik wykonania kodu:
'Backtrack limit was exhausted'
Zobacz też
-
funkcję
preg_match,
która wykonuje wyszukiwanie według wyrażenia regularnego -
funkcję
preg_replace,
która wykonuje zamianę według wyrażenia regularnego -
funkcję
preg_quote,
która escapuje specjalne znaki w wyrażeniach regularnych