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

phppreg_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<?php
  preg_match('/invalid(regex/', 'test');
  $error_code = preg_last_error();
  echo $error_code;
?>

Resultado da execução do código:

php4

Exemplo

Uso com constantes de erro PCRE:

php<?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:

php'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