【问题标题】:JSON wrapped in some HTML, remove HTML [duplicate]JSON包装在一些HTML中,删除HTML [重复]
【发布时间】:2012-11-16 07:15:39
【问题描述】:

可能重复:
How to parse and process HTML with PHP?

我正在尝试使用 file_get_contents() 使用 PHP 抓取页面。 这个页面有一些用一些 HTML 包裹的 JSON。我想去掉这个 HTML 以便能够在抓取的字符串上使用 json_decode() ,这样我就可以单独处理 JSON。 有什么干净的方法可以做到这一点吗?快速搜索并没有真正导致任何结果。 谢谢

【问题讨论】:

    标签: php html file-get-contents json


    【解决方案1】:

    解析/剥离 HTML 内容总是一个棘手的问题,因为(常见?)如果 HTML 标记格式错误并且速度缓慢,那么通过正则表达式的解决方案可能会崩溃。我建议使用这个小的 HTML DOM 解析器类:

    http://simplehtmldom.sourceforge.net/


    从子评论编辑和添加:

    好吧,这是一个糟糕的问题,因为内联 javascript 没有正确地用 CDATA-Tags 包装。否则这样的事情可能会起作用:

    $html = new simple_html_dom();
    $html->load_file('your-external-file');
    
    foreach($html->find("script") as $obj) {
        if(isset($obj->innertext) && strpos($obj->innertext, 'window._jscalls'))
            echo $obj->innertext;
    }
    

    【讨论】:

    • 是的,使用正则表达式是不可能的。我想到了简单的 HTML DOM,但是由于我要解析的是 JSON,所以我真的不能这样做,因为返回的字符串只包含 HTML 而不是 JSON...
    • 你能提供一个 HTML/JSON 标记的例子吗?
    • 我现在正在使用手机,但客户制作的内容与您在 Instagram 页面上可以找到的内容非常相似(例如 instagram.com/kevin)。谢谢
    • 好吧,这很糟糕,因为内联 javascript 没有正确地用 CDATA-Tags 包装。否则这样的事情可能会起作用:请参阅顶部帖子(虽然很脏)。
    • 使用 HTML Simple Dom 的好方法 伙计,非常感谢,我可以让它这样工作,尽管它不是很干净,但它至少暂时起到了作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-28
    • 2013-04-10
    • 1970-01-01
    • 2014-05-07
    • 2016-12-14
    • 1970-01-01
    • 2012-11-20
    相关资源
    最近更新 更多