phpQuery的替代方案;处理无效标记时不会崩溃


Alternative to phpQuery that doesn't crash when dealing with invalid markup?

我正在使用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的非常好的文章。