当前位置: 首页 > 面试题库 >

在通过DomDocument(PHP)加载格式不正确的HTML时禁用警告

甄飞飙
2023-03-14
问题内容

我需要解析一些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)

可以禁止显示警告,但是如何以编程方式捕获这些警告?


问题答案:

您可以使用安装临时错误处理程序 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());
}


 类似资料:
  • 本文向大家介绍使用PHP的HTML DOMDocument解析HTML,包括了使用PHP的HTML DOMDocument解析HTML的使用技巧和注意事项,需要的朋友参考一下 可以通过以下代码获取<div>标记内的<div>标记内的文本,其中<div>内的class =“ main”内- 示例 输出结果 这将产生以下输出-

  • 然后我在Jsoup as中将xpath转换为CSS查询,以便稍后提取特定元素: 代码的执行没有正确定位我,而是定位到Firebug在XPath中引用的元素: 从最后来看,第一个区别是: 有没有任何替代Jsoup的方法可以处理这类问题?

  • 问题内容: 我正在使用jQuery的ajax方法来获取静态JSON文件。数据是从本地文件系统加载的,因此没有服务器,因此无法更改MIME类型。 我相信我的JSON格式正确: 我的ajax调用很简单: 如果我用文档标签包装JSON: 正如上面提到的另一个Stack Overflow问题中提到的那样,ajax调用失败,并出现解析错误。 因此:在读取客户端JSON文件时,有没有一种方法可以避免Firef

  • 为了避免在模式验证过程中出现PHP警告,可以使用和

  • 问题内容: 这里的PHP解析有点新,但是我似乎无法让PHP的DomDocument返回显然是可识别的节点。加载的HTML将来自“ .net”,因此不一定能保证XML的合规性,但我尝试以下操作: 尽管我没有收到任何错误,但我仅收到以下内容作为输出: 我应该无法查找标签,因为它确实具有ID吗? 问题答案: 该手册解释了为什么: 为了使此功能起作用,您将需要使用DOMElement->setIdAttr

  • 问题内容: 我一直在尝试解析HTML5代码,以便可以在代码内设置属性/值,但是DOMDocument(PHP5.3)似乎不支持诸如和的标记。 有什么方法可以在PHP中将其解析为HTML并处理代码? 复制代码: 错误 警告:DOMDocument :: loadHTML():在实体中的标签导航无效,第17行在/home/wbkrnl/public_html/new- mvc/1.php中的第4行 警