Função preg_last_error
A função preg_last_error retorna o código do último erro,
ocorrido durante o trabalho com funções de expressões regulares.
Isso é útil para depurar expressões regulares, quando funções
como preg_match ou preg_replace retornam false.
A função não aceita parâmetros.
A função retorna um código de erro inteiro. Para conveniência, você pode comparar o código de erro com constantes especiais (veja a tabela abaixo).
Sintaxe
preg_last_error(): int;
Tabela com constantes de erro
| Constante | Valor | Descrição |
|---|---|---|
PREG_NO_ERROR |
0 | Nenhum erro ocorreu |
PREG_INTERNAL_ERROR |
1 | Erro interno do PCRE |
PREG_BACKTRACK_LIMIT_ERROR |
2 | Limite de retrocesso (backtrack limit) excedido |
PREG_RECURSION_LIMIT_ERROR |
3 | Limite de recursão excedido |
PREG_BAD_UTF8_ERROR |
4 | Dados UTF-8 incorretos |
PREG_BAD_UTF8_OFFSET_ERROR |
5 | O deslocamento não corresponde ao início de um código UTF-8 válido |
PREG_JIT_STACKLIMIT_ERROR |
6 | Limite de pilha do compilador JIT excedido |
Exemplo
Vamos verificar o erro após uma expressão regular incorreta:
<?php
preg_match('/invalid(regex/', 'test');
$error_code = preg_last_error();
echo $error_code;
?>
Resultado da execução do código:
4
Exemplo
Uso com constantes de erro PCRE:
<?php
preg_match('/(?:\D+/', 'abc123');
if (preg_last_error() === PREG_BACKTRACK_LIMIT_ERROR) {
echo 'Backtrack limit was exhausted';
}
?>
Resultado da execução do código:
'Backtrack limit was exhausted'
Veja também
-
a função
preg_match,
que executa uma busca por expressão regular -
a função
preg_replace,
que executa uma substituição por expressão regular -
a função
preg_quote,
que escapa caracteres especiais em expressões regulares