Funksjonen preg_last_error

Funksjonen preg_last_error returnerer koden for den siste feilen, som oppstod under arbeid med funksjoner for regulære uttrykk. Dette er nyttig for feilsøking av regulære uttrykk, når funksjoner som preg_match eller preg_replace returnerer false. Funksjonen tar ingen parametere.

Funksjonen returnerer en heltallsfeilkode. For enkelhets skyld kan du sammenligne feilkoden med spesielle konstanter (se tabellen nedenfor).

Syntaks

phppreg_last_error(): int;

Tabell med feilkonstanter

Konstant Verdi Beskrivelse
PREG_NO_ERROR 0 Ingen feil oppstod
PREG_INTERNAL_ERROR 1 Intern PCRE-feil
PREG_BACKTRACK_LIMIT_ERROR 2 Grensen for bakoversporing (backtrack limit) er overskredet
PREG_RECURSION_LIMIT_ERROR 3 Rekursjonsgrensen er overskredet
PREG_BAD_UTF8_ERROR 4 Ugyldige UTF-8-data
PREG_BAD_UTF8_OFFSET_ERROR 5 Offset samsvarer ikke med starten på en gyldig UTF-8-kode
PREG_JIT_STACKLIMIT_ERROR 6 JIT-kompilatoren sin stakkbegrensning er overskredet

Eksempel

La oss sjekke feilen etter et ugyldig regulært uttrykk:

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

Resultat av kjøring:

php4

Eksempel

Bruk med PCRE feilkonstanter:

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

Resultat av kjøring:

php'Backtrack limit was exhausted'

Se også

  • funksjonen preg_match,
    som utfører et søk med regulært uttrykk
  • funksjonen preg_replace,
    som utfører en erstatning med regulært uttrykk
  • funksjonen preg_quote,
    som escape-spesialtegn i regulære uttrykk