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