preg_last_error

funkcja

Zwraca kod błędu ostatniego wykonania wyrażenia regularnego PCRE. Przydatna do debugowania, gdy funkcje preg_* zwracają false lub nieoczekiwany wynik.

preg_last_error(): int

Po każdym wywołaniu funkcji z rodziny preg_* możesz sprawdzić, czy nie doszło do błędu, wywołując preg_last_error(). Zwraca ona jedną ze stałych: PREG_NO_ERROR (0), PREG_INTERNAL_ERROR (1), PREG_BACKTRACK_LIMIT_ERROR (2), PREG_RECURSION_LIMIT_ERROR (3), PREG_BAD_UTF8_ERROR (4) i kilka innych. Od PHP 8.0 możesz też użyć preg_last_error_msg(), która zwraca czytelny komunikat zamiast liczby.

Najczęstszą przyczyną błędu w praktyce jest przekroczenie limitu nawrotów (pcre.backtrack_limit) przy skomplikowanych wzorcach działających na długich ciągach.

<?php
declare(strict_types=1);

preg_match('/^\d+$/', '12345');
echo preg_last_error();     // wynik: 0
echo preg_last_error_msg(); // wynik: No error