Funcția preg_last_error
Funcția preg_last_error returnează codul ultimei erori,
apărută în timpul lucrului cu funcțiile pentru expresii regulate.
Aceasta este utilă pentru depanarea expresiilor regulate, când funcțiile
precum preg_match sau preg_replace returnează false.
Funcția nu acceptă parametri.
Funcția returnează un cod de eroare întreg. Pentru comoditate, codul de eroare poate fi comparat cu constante speciale (vezi tabelul de mai jos).
Sintaxă
preg_last_error(): int;
Tabel cu constantele de eroare
| Constantă | Valoare | Descriere |
|---|---|---|
PREG_NO_ERROR |
0 | Nu a apărut nicio eroare |
PREG_INTERNAL_ERROR |
1 | Eroare internă PCRE |
PREG_BACKTRACK_LIMIT_ERROR |
2 | Limita de backtracking a fost depășită (backtrack limit) |
PREG_RECURSION_LIMIT_ERROR |
3 | Limita de recursivitate a fost depășită |
PREG_BAD_UTF8_ERROR |
4 | Date UTF-8 incorecte |
PREG_BAD_UTF8_OFFSET_ERROR |
5 | Offset-ul nu corespunde cu începutul unui cod UTF-8 corect |
PREG_JIT_STACKLIMIT_ERROR |
6 | Limita stivei compilatorului JIT a fost depășită |
Exemplu
Să verificăm eroarea după o expresie regulată incorectă:
<?php
preg_match('/invalid(regex/', 'test');
$error_code = preg_last_error();
echo $error_code;
?>
Rezultatul executării codului:
4
Exemplu
Utilizarea cu constantele de eroare PCRE:
<?php
preg_match('/(?:\D+/', 'abc123');
if (preg_last_error() === PREG_BACKTRACK_LIMIT_ERROR) {
echo 'Backtrack limit was exhausted';
}
?>
Rezultatul executării codului:
'Backtrack limit was exhausted'
Vedeți și
-
funcția
preg_match,
care efectuează căutare după expresie regulată -
funcția
preg_replace,
care efectuează înlocuire după expresie regulată -
funcția
preg_quote,
care ecranează caracterele speciale în expresiile regulate