hi,欢迎访问本站!
当前位置: 首页编程开发正文

php屏蔽DomDocument::loadHTML()输出的警告信息

墨初 编程开发 988阅读

在最近的一个小项目中需要php代码去解析一段html格式的html文档,但在实际调用中发现了php脚本运行时抛出了大量的警告信息,下面是具体的是错误以及错误的屏蔽方法。

DomDocument::loadHTML()错误代码:

先看一下以下的这段php解析html文档代码的执行代码:

$html = 'xxxxxx'; //这里是需要解析的html源码
$dom = new DOMDocument();
$dom->loadHTML('<?xml encoding="UTF-8">' .$html);

错误抛出代码:

[ error ] [2]DOMDocument::loadHTML(): Attribute solid redefined in Entity, line: 2
[ error ] [2]DOMDocument::loadHTML(): error parsing attribute name in Entity, line: 2
[ error ] [2]DOMDocument::loadHTML(): Unexpected end tag : td in Entity, line: 2

错误产生的原因:

主要错误的原因是由于加载的html源码中的html标签不完整或不规规范造成,也可以说html中的一些带有闭合的标签没有闭合造成的。

错误解决方案:

使用libxml_use_internal_errors()来禁用标准的libxml错误,并启用用户错误处理。

解决方案代码:

// 禁用标准的 libxml 错误,并启用用户错误处理
$libxml_previous_state = libxml_use_internal_errors(true);
$html = 'xxxxxx'; //这里是需要解析的html源码
$dom = new DOMDocument();
$dom->loadHTML('<?xml encoding="UTF-8">' .$html);
// 清空 libxml 错误缓冲
libxml_clear_errors();
// 还原之前设置
libxml_use_internal_errors($libxml_previous_state);
声明:无特别说明,转载请标明本文来源!
相关推荐