Funktionen preg_last_error

Funktionen preg_last_error returnerar koden för det senaste felet som uppstod vid arbete med funktioner för reguljära uttryck. Detta är användbart för felsökning av reguljära uttryck när funktioner som preg_match eller preg_replace returnerar false. Funktionen tar inga parametrar.

Funktionen returnerar en heltals felkod. För enkelhets skull kan felkoden jämföras med speciella konstanter (se tabellen nedan).

Syntax

phppreg_last_error(): int;

Tabell med felkonstanter

Konstant Värde Beskrivning
PREG_NO_ERROR 0 Inga fel inträffade
PREG_INTERNAL_ERROR 1 Internt PCRE-fel
PREG_BACKTRACK_LIMIT_ERROR 2 Gränsen för backtracking överskreds (backtrack limit)
PREG_RECURSION_LIMIT_ERROR 3 Rekursionsgränsen överskreds
PREG_BAD_UTF8_ERROR 4 Ogiltiga UTF-8-data
PREG_BAD_UTF8_OFFSET_ERROR 5 Offset motsvarar inte början på en giltig UTF-8-kod
PREG_JIT_STACKLIMIT_ERROR 6 JIT-kompilatorns stackgräns överskreds

Exempel

Låt oss kontrollera felet efter ett ogiltigt reguljärt uttryck:

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

Resultat av kodkörning:

php4

Exempel

Användning med PCRE felkonstanter:

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

Resultat av kodkörning:

php'Backtrack limit was exhausted'

Se även

  • funktionen preg_match,
    som utför sökning med ett reguljärt uttryck
  • funktionen preg_replace,
    som utför ersättning med ett reguljärt uttryck
  • funktionen preg_quote,
    som escape-specialtecken i reguljära uttryck