如何处理致命错误


How to tackle fatal error?

嗨,我想用php的substr函数获取字符串的一部分。

这是我的代码

$error = array("Warning","Parse error","*Fatal error");
$errorfunction = ''; 
      foreach( $error as $error => $err){     
      if(preg_match("/$err/", $script_output, $matches, PREG_OFFSET_CAPTURE))
        $errorfunction .= "<b>$err<br>";
      }
      if($errorfunction != ''){ 
      $script_output =substr($script_output,0,strpos($script_output,"in ")); 
      }

整个功能运行成功,但当我遇到致命错误时,功能不起作用。

你们可以看到我已经定义了错误的数组

$error = array("Warning","Parse error","*Fatal error");

我将致命错误定义为*致命错误,因为在php中,每当出现致命错误时,都会以*致命错误启动

但这是行不通的。请大家告诉我哪里错了。

任何建议都将不胜感激。请帮助

字符串开头的*在正则表达式中有特殊含义;使用它存在PCRE的语法错误打开错误,这样你就知道出了什么问题,然后不要使用正则表达式来查找静态字符串:

if (strpos($script_output, $err) !== false) {
    $errorfunction .= "<b>$err<br>";
}

如果您的实际用例更复杂,preg_quote将为您转义正则表达式中具有特殊含义的字符。(请确保传递分隔符。)