为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

隔江千里 2019-09-02 11:15:32
我需要解析一些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)可以抑制警告,但我如何以编程方式捕获这些警告?
查看完整描述

3 回答

?
眼眸繁星

TA贡献1873条经验 获得超9个赞

您可以使用安装临时错误处理程序 set_error_handler


class 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());

}


查看完整回答
反对 回复 2019-09-02
?
梦里花落0921

TA贡献1772条经验 获得超6个赞

呼叫


libxml_use_internal_errors(true);

用...处理之前 $xmlDoc->loadHTML()


这告诉libxml2 不要向PHP 发送错误和警告。然后,要检查错误并自己处理它们,您可以在准备好时查阅libxml_get_last_error()和/或libxml_get_errors()。


查看完整回答
反对 回复 2019-09-02
  • 3 回答
  • 0 关注
  • 614 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信