我正在使用phpQuery来解析页面,但我注意到,当将其与带有无效标记的页面一起使用时,会导致
PHP致命错误:未捕获异常"exception",消息为"error"加载XML标记的
页面中的一个违规代码示例是:
<?xml version="1.0" encoding="iso-8859-2"?>
<link href="http://example.com/?foo=bar&baz=quz" />
我希望phpQuery对于这样的页面会返回false,但遗憾的是,它会导致即时致命错误,使我无法对此采取措施
初始化phpquery(如phpQuery::newDocumentFile($page);
)时会立即发生错误
我真的很喜欢phpQuery,因为它的工作原理类似于jQuery,但我正在寻找一种对无效标记有效的替代解决方案。
实际上,崩溃并不是因为无效的标记引起的。崩溃是因为您没有捕捉到无效标记引发的异常。
尝试在Try-catch中初始化,如:
try {
phpQuery::newDocumentFile($page);
//Process the page here
} catch (Exception $e) {
//What do we do if any of that fails?
}
只有当您没有发现异常时,异常才会成为致命错误。
您可以先使用PHP验证XML,然后再传递给phpQuery。这里有一篇关于如何通过PHP验证XML的非常好的文章。