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!