Ce face preg_last_error / preg_last_error_msg
Funcțiile preg_ returnează false sau null când întâlnesc o eroare la rulare, de exemplu un text UTF-8 invalid cu modificatorul u sau un șablon prea costisitor. Ca să afli motivul, apelezi imediat după preg_last_error (un cod, de exemplu PREG_BAD_UTF8_ERROR) sau preg_last_error_msg (un mesaj în engleză).
Fără eroare, codul este PREG_NO_ERROR (0) și mesajul "No error".
Ce returnează
preg_last_error: codul erorii. preg_last_error_msg: mesajul.
Exemple
Exemplul 1: Text UTF-8 invalid
<?php
$taiat = substr("Iași", 0, 3);
var_dump(preg_match('/\w+/u', $taiat));
var_dump(preg_last_error() === PREG_BAD_UTF8_ERROR);
echo preg_last_error_msg() . "\n";
preg_match('/\w+/u', "Iași");
echo preg_last_error_msg();
Rezultat
bool(false)
bool(true)
Malformed UTF-8 characters, possibly incorrectly encoded
No error
Exemplul 2: Șablon care depășește limita de calcul
Șablonul încearcă prea multe variante până să decidă că nu se potrivește și depășește limita pcre.backtrack_limit.
<?php
$rezultat = preg_match('/(?:\D+|<\d+>)*[!?]/', "foobar foobar foobar");
var_dump($rezultat);
echo preg_last_error_msg();
Rezultat
bool(false)
Backtrack limit exhausted
Greșeli frecvente
- Tratezi
falsede lapreg_matchca „nu s-a potrivit”.0înseamnă fără potrivire,falseînseamnă eroare: verifică cu=== falseși citeștepreg_last_error_msg().
Comenzi înrudite
preg_match: Verifică dacă un text se potrivește cu o expresie regulată și extrage prima potrivire.mb_check_encoding: Verifică dacă un text este valid într-o anumită codare, de exemplu dacă este UTF-8 corect.preg_replace: Înlocuiește toate potrivirile unei expresii regulate cu alt text.