【问题标题】:Alternative to phpQuery that doesn't crash when dealing with invalid markup?处理无效标记时不会崩溃的 phpQuery 的替代方案?
【发布时间】:2012-03-22 18:28:43
【问题描述】:

我正在使用 phpQuery 来解析页面,但是我注意到当将它与带有无效标记的页面一起使用时,它会导致

PHP 致命错误:未捕获的异常“异常”和消息“错误” 加载 XML 标记'

页面中的示例违规代码是:

<?xml version="1.0" encoding="iso-8859-2"?>
<link href="http://example.com/?foo=bar&baz=quz" />

我希望 phpQuery 会为此类页面返回 false,但遗憾的是,它会导致即时致命错误,阻止我对其进行处理。

在初始化像phpQuery::newDocumentFile($page);这样的phpquery时立即发生错误

我真的很喜欢 phpQuery,因为它像 jQuery 一样工作,但我正在寻找一种适用于无效标记的替代解决方案。

【问题讨论】:

    标签: php regex screen-scraping


    【解决方案1】:

    实际上,崩溃并不是因为无效的标记造成的。崩溃是因为你没有捕捉到无效标记抛出的异常。

    尝试在 try-catch 中进行初始化,例如:

    try {
        phpQuery::newDocumentFile($page);
        //Process the page here
    } catch (Exception $e) {
        //What do we do if any of that fails?
    }
    

    如果你没有捕捉到它们,异常只会变成致命错误。

    【讨论】:

      【解决方案2】:

      您可以先使用 PHP 来验证 XML,然后再传递给 phpQuery。这是关于如何通过 PHP 验证 XML 的漂亮 good article

      【讨论】:

        猜你喜欢
        • 2012-03-02
        • 2023-01-19
        • 2011-11-28
        • 2016-12-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-18
        • 1970-01-01
        相关资源
        最近更新 更多