The preg_last_error Function
The preg_last_error function returns the code of the last error,
that occurred while working with regular expression functions.
This is useful for debugging regular expressions when functions
like preg_match or preg_replace return false.
The function does not accept any parameters.
The function returns an integer error code. For convenience, the error code can be compared with special constants (see the table below).
Syntax
preg_last_error(): int;
Error Constants Table
| Constant | Value | Description |
|---|---|---|
PREG_NO_ERROR |
0 | No errors occurred |
PREG_INTERNAL_ERROR |
1 | Internal PCRE error |
PREG_BACKTRACK_LIMIT_ERROR |
2 | Backtrack limit was exhausted |
PREG_RECURSION_LIMIT_ERROR |
3 | Recursion limit was exceeded |
PREG_BAD_UTF8_ERROR |
4 | Malformed UTF-8 data |
PREG_BAD_UTF8_OFFSET_ERROR |
5 | The offset did not correspond to the beginning of a valid UTF-8 code point |
PREG_JIT_STACKLIMIT_ERROR |
6 | JIT stack limit was exceeded |
Example
Let's check the error after an invalid regular expression:
<?php
preg_match('/invalid(regex/', 'test');
$error_code = preg_last_error();
echo $error_code;
?>
Code execution result:
4
Example
Usage with PCRE error constants:
<?php
preg_match('/(?:\D+/', 'abc123');
if (preg_last_error() === PREG_BACKTRACK_LIMIT_ERROR) {
echo 'Backtrack limit was exhausted';
}
?>
Code execution result:
'Backtrack limit was exhausted'
See Also
-
the
preg_matchfunction,
which performs a regular expression match -
the
preg_replacefunction,
which performs a regular expression search and replace -
the
preg_quotefunction,
which escapes special characters in regular expressions