Funzione preg_last_error

La funzione preg_last_error restituisce il codice dell'ultimo errore, verificatosi durante l'utilizzo delle funzioni per le espressioni regolari. È utile per il debug delle espressioni regolari, quando funzioni come preg_match o preg_replace restituiscono false. La funzione non accetta parametri.

La funzione restituisce un codice di errore intero. Per comodità, è possibile confrontare il codice di errore con delle costanti speciali (vedi la tabella sottostante).

Sintassi

phppreg_last_error(): int;

Tabella con le costanti di errore

Costante Valore Descrizione
PREG_NO_ERROR 0 Nessun errore verificatosi
PREG_INTERNAL_ERROR 1 Errore interno di PCRE
PREG_BACKTRACK_LIMIT_ERROR 2 Superato il limite di backtracking (backtrack limit)
PREG_RECURSION_LIMIT_ERROR 3 Superato il limite di ricorsione
PREG_BAD_UTF8_ERROR 4 Dati UTF-8 non validi
PREG_BAD_UTF8_OFFSET_ERROR 5 L'offset non corrisponde all'inizio di un codice UTF-8 valido
PREG_JIT_STACKLIMIT_ERROR 6 Superato il limite dello stack del compilatore JIT

Esempio

Controlliamo l'errore dopo un'espressione regolare non valida:

php<?php
  preg_match('/invalid(regex/', 'test');
  $error_code = preg_last_error();
  echo $error_code;
?>

Risultato dell'esecuzione del codice:

php4

Esempio

Utilizzo con le costanti di errore PCRE:

php<?php
  preg_match('/(?:\D+/', 'abc123');
  if (preg_last_error() === PREG_BACKTRACK_LIMIT_ERROR) {
    echo 'Backtrack limit was exhausted';
  }
?>

Risultato dell'esecuzione del codice:

php'Backtrack limit was exhausted'

Vedi anche

  • la funzione preg_match,
    che esegue una ricerca con un'espressione regolare
  • la funzione preg_replace,
    che esegue una sostituzione con un'espressione regolare
  • la funzione preg_quote,
    che escape i caratteri speciali nelle espressioni regolari