如何解决致命错误?

时间:2013-12-16 05:30:54

标签: php

大家好我想通过使用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出现致命错误时它会以*致命错误开始

但这不起作用。请各位建议我,我错了。

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

1 个答案:

答案 0 :(得分:0)

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

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

如果您的真实用例更复杂,preg_quote将在正则表达式中转义具有特殊含义的字符。 (确保通过分隔符。)