是否可以从preg_match捕获任何错误并显示常见错误消息?

时间:2016-04-28 15:34:38

标签: php regex

我有一个网站,其中包含一个搜索框,允许用户输入一个模式,然后根据大字符串进行检查,以查看这些字符串中是否存在用户指定模式的匹配项。这是使用PHP函数preg_match()完成的。

但是,当用户输入无效模式时会出现问题,例如导致错误的模式:

  

preg_match()[function.preg-match]:未知的修饰符。

搜索功能需要能够处理preg_match()方法引发的任何错误,并在屏幕上显示一般模式无效消息。我已经在网上查了但是我找不到一个能抓住任何错误preg_match()可以抛出的方法,任何人都有任何想法?

2 个答案:

答案 0 :(得分:2)

举一个简单的例子,设置错误处理程序并抛出ExceptionErrorException

function exception_error_handler($severity, $message, $file, $line) {
    throw new ErrorException($message, 0, $severity, $file, $line);
}
set_error_handler("exception_error_handler");

然后尝试/ catch:

try {
    preg_match('/.*/hello', 'hello');
} catch (Exception $e) {
    echo 'Caught exception: ',  $e->getMessage(), "\n";
}
  

捕获异常:preg_match():未知修饰符'h'

答案 1 :(得分:1)

尝试:preg_last_error()详细信息页面: http://php.net/manual/en/function.preg-last-error.php