Fonction preg_last_error
La fonction preg_last_error retourne le code de la dernière erreur,
survenue lors de l'utilisation des fonctions pour les expressions régulières.
Ceci est utile pour déboguer les expressions régulières lorsque des fonctions
comme preg_match ou preg_replace retournent false.
La fonction ne prend aucun paramètre.
La fonction retourne un code d'erreur entier. Pour plus de commodité, le code d'erreur peut être comparé à des constantes spéciales (voir le tableau ci-dessous).
Syntaxe
preg_last_error(): int;
Tableau des constantes d'erreur
| Constante | Valeur | Description |
|---|---|---|
PREG_NO_ERROR |
0 | Aucune erreur ne s'est produite |
PREG_INTERNAL_ERROR |
1 | Erreur interne de PCRE |
PREG_BACKTRACK_LIMIT_ERROR |
2 | Limite de backtracking dépassée (backtrack limit) |
PREG_RECURSION_LIMIT_ERROR |
3 | Limite de récursion dépassée |
PREG_BAD_UTF8_ERROR |
4 | Données UTF-8 incorrectes |
PREG_BAD_UTF8_OFFSET_ERROR |
5 | Le décalage ne correspond pas au début d'un code UTF-8 valide |
PREG_JIT_STACKLIMIT_ERROR |
6 | Limite de pile du compilateur JIT dépassée |
Exemple
Vérifions l'erreur après une expression régulière incorrecte :
<?php
preg_match('/invalid(regex/', 'test');
$error_code = preg_last_error();
echo $error_code;
?>
Résultat de l'exécution du code :
4
Exemple
Utilisation avec les constantes d'erreur PCRE :
<?php
preg_match('/(?:\D+/', 'abc123');
if (preg_last_error() === PREG_BACKTRACK_LIMIT_ERROR) {
echo 'Backtrack limit was exhausted';
}
?>
Résultat de l'exécution du code :
'Backtrack limit was exhausted'
Voir aussi
-
la fonction
preg_match,
qui effectue une recherche avec une expression régulière -
la fonction
preg_replace,
qui effectue un remplacement avec une expression régulière -
la fonction
preg_quote,
qui échappe les caractères spéciaux dans les expressions régulières