Συνάρτηση preg_last_error

Η συνάρτηση preg_last_error επιστρέφει τον κωδικό του τελευταίου σφάλματος, που προέκυψε κατά την εργασία με συναρτήσεις για κανονικές εκφράσεις. Αυτό είναι χρήσιμο για τον εντοπισμό σφαλμάτων σε κανονικές εκφράσεις, όταν συναρτήσεις όπως η preg_match ή η preg_replace επιστρέφουν false. Η συνάρτηση δεν δέχεται παραμέτρους.

Η συνάρτηση επιστρέφει έναν ακέραιο κωδικό σφάλματος. Για ευκολία, μπορείτε να συγκρίνετε τον κωδικό σφάλματος με ειδικές σταθερές (βλ. πίνακα παρακάτω).

Σύνταξη

phppreg_last_error(): int;

Πίνακας με σταθερές σφαλμάτων

Σταθερά Τιμή Περιγραφή
PREG_NO_ERROR 0 Δεν προέκυψαν σφάλματα
PREG_INTERNAL_ERROR 1 Εσωτερικό σφάλμα PCRE
PREG_BACKTRACK_LIMIT_ERROR 2 Υπέρβαση ορίου οπισθοδρόμησης (backtrack limit)
PREG_RECURSION_LIMIT_ERROR 3 Υπέρβαση ορίου αναδρομής
PREG_BAD_UTF8_ERROR 4 Εσφαλμένα δεδομένα UTF-8
PREG_BAD_UTF8_OFFSET_ERROR 5 Η μετατόπιση δεν αντιστοιχεί στην αρχή ενός έγκυρου κώδικα UTF-8
PREG_JIT_STACKLIMIT_ERROR 6 Υπέρβαση ορίου στοίβας του JIT compiler

Παράδειγμα

Έλεγχος σφάλματος μετά από μια εσφαλμένη κανονική έκφραση:

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

Αποτέλεσμα εκτέλεσης κώδικα:

php4

Παράδειγμα

Χρήση με σταθερές σφαλμάτων PCRE:

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

Αποτέλεσμα εκτέλεσης κώδικα:

php'Backtrack limit was exhausted'

Δείτε επίσης

  • τη συνάρτηση preg_match,
    που εκτελεί αναζήτηση με βάση μια κανονική έκφραση
  • τη συνάρτηση preg_replace,
    που εκτελεί αντικατάσταση με βάση μια κανονική έκφραση
  • τη συνάρτηση preg_quote,
    που αποδιαφυγώνει ειδικούς χαρακτήρες σε κανονικές εκφράσεις