How do I catch an invalid preg_match pattern?
According to the docs,
preg_match() returns FALSE if an error occurred.
the problem is that it will also throw a warning.
One way to deal with this is is to suppress the output of the error message, catch the return value, and output the error using error_get_last()
if it was false.
Something like
$old_error = error_reporting(0); // Turn off error reporting
$match = preg_match(......);
if ($match === false)
{
$error = error_get_last();
echo $error["message"];
}
error_reporting($old_error); // Set error reporting to old level
You may not need the error reporting bit in a production environment - it depends on your setup.
Just test it.
preg_match()
will return FALSE
if the pattern is not valid.
Return values: preg_match() returns the number of times pattern matches. That will be either 0 times (no match) or 1 time because preg_match() will stop searching after the first match. preg_match_all() on the contrary will continue until it reaches the end of subject. preg_match() returns FALSE if an error occurred.
You can use preg_last_error() to get responses. Detail page:
http://php.net/manual/en/function.preg-last-error.php
Thanks!