Funktionen preg_last_error

Funktionen preg_last_error returnerer koden for den seneste fejl, der opstod under arbejde med funktioner til regulære udtryk. Dette er nyttigt til fejlfinding af regulære udtryk, når funktioner som preg_match eller preg_replace returnerer false. Funktionen tager ingen parametre.

Funktionen returnerer en heltals fejlkode. For nemheds skyld kan fejlkoden sammenlignes med specielle konstanter (se tabellen nedenfor).

Syntaks

phppreg_last_error(): int;

Tabel med fejlkonstanter

Konstant Værdi Beskrivelse
PREG_NO_ERROR 0 Ingen fejl opstod
PREG_INTERNAL_ERROR 1 Intern PCRE-fejl
PREG_BACKTRACK_LIMIT_ERROR 2 Grænsen for backtracking er overskredet (backtrack limit)
PREG_RECURSION_LIMIT_ERROR 3 Rekursionsgrænsen er overskredet
PREG_BAD_UTF8_ERROR 4 Ugyldige UTF-8 data
PREG_BAD_UTF8_OFFSET_ERROR 5 Offset svarer ikke til starten på en gyldig UTF-8 kode
PREG_JIT_STACKLIMIT_ERROR 6 Grænsen for JIT-kompilatorens stak er overskredet

Eksempel

Lad os tjekke fejlen efter et ugyldigt regulært udtryk:

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

Resultat af kodeudførelse:

php4

Eksempel

Brug med PCRE fejlkonstanter:

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

Resultat af kodeudførelse:

php'Backtrack limit was exhausted'

Se også

  • funktionen preg_match,
    som udfører et søgning med et regulært udtryk
  • funktionen preg_replace,
    som udfører en erstatning med et regulært udtryk
  • funktionen preg_quote,
    som escapede specielle tegn i regulære udtryk