phpQuery使用DOMDocument::loadHTML方法产生报错的处理方式

半世苍凉 提交于 2019-12-02 20:22:44

发现问题

在做爬虫的时候,用了QueryList,在运行的过程中查看日志,出现很多关于phpQuery单文件的error报错,问题是出在html非标准化格式

[ error ] [2]DOMDocument::loadHTML(): htmlParseEntityRef: expecting ';' in Entity, line: 1262[/home/querying/PhpstormProjects/xianlang10.com/EngineSeo/vendor/jaeger/phpquery-single/phpQuery.php:328]
[ error ] [2]DOMDocument::loadHTML(): htmlParseEntityRef: expecting ';' in Entity, line: 1262[/home/querying/PhpstormProjects/xianlang10.com/EngineSeo/vendor/jaeger/phpquery-single/phpQuery.php:328]

解决问题

在查看php手册关于DOMDocumentloadHTML方法的使用的时候,发现libxml_use_internal_errors可以对此类错误,强制以libxml_get_errors()进行获取,该函数返回内容一个迭代器

<?php
	//因此我们可以在调用loadHtml方法之前,先规避这个问题
	// enable user error handling
	libxml_use_internal_errors(true);

	// load the document
	$doc = new DOMDocument;

	if (!$doc->load('file.html')) {
		foreach (libxml_get_errors() as $error) {
			// handle errors here
		}
		libxml_clear_errors();
	}
?>
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!