通过DomDocument(PHP)加载非格式良好的HTML时禁用警告

我需要解析一些HTML文件,但是,它们格式不正确并且PHP打印出警告。我想以编程方式避免这种调试/警告行为。请指教。谢谢!


码:


// create a DOM document and load the HTML data

$xmlDoc = new DomDocument;

// this dumps out the warnings

$xmlDoc->loadHTML($fetchResult);

这个:


@$xmlDoc->loadHTML($fetchResult)

可以抑制警告,但我如何以编程方式捕获这些警告?


隔江千里
浏览 615回答 3
3回答

眼眸繁星

您可以使用安装临时错误处理程序 set_error_handlerclass ErrorTrap {  protected $callback;  protected $errors = array();  function __construct($callback) {    $this->callback = $callback;  }  function call() {    $result = null;    set_error_handler(array($this, 'onError'));    try {      $result = call_user_func_array($this->callback, func_get_args());    } catch (Exception $ex) {      restore_error_handler();              throw $ex;    }    restore_error_handler();    return $result;  }  function onError($errno, $errstr, $errfile, $errline) {    $this->errors[] = array($errno, $errstr, $errfile, $errline);  }  function ok() {    return count($this->errors) === 0;  }  function errors() {    return $this->errors;  }}用法:// create a DOM document and load the HTML data$xmlDoc = new DomDocument();$caller = new ErrorTrap(array($xmlDoc, 'loadHTML'));// this doesn't dump out any warnings$caller->call($fetchResult);if (!$caller->ok()) {  var_dump($caller->errors());}

梦里花落0921

呼叫libxml_use_internal_errors(true);用...处理之前 $xmlDoc->loadHTML()这告诉libxml2 不要向PHP 发送错误和警告。然后,要检查错误并自己处理它们,您可以在准备好时查阅libxml_get_last_error()和/或libxml_get_errors()。
打开App,查看更多内容
随时随地看视频慕课网APP