【问题标题】:get content inside html not working获取html中的内容不起作用
【发布时间】:2013-04-16 04:52:15
【问题描述】:

我正在尝试从网站内部提取 html 内容。我只想要标签内的内容。

    //$validLink is a link with .htm extension, source code is rather large 
    //contains 24,000 lines of html code

    $thehtml = file_get_contents($validlink);
    $thehtml = preg_match("/<body.*?>(.*?)<\/body>/is", $thehtml);

我还能做什么? $thehtml 是空的......我正在尝试将其插入到 wordpress 帖子中......但 $thehtml 是空的......出于某种奇怪的原因。是否有可能的超时问题或什么???

不可能有超时问题.....因为我注意到如果我只输出 file_get_contents($validlink);由于某种原因找不到BODY.....

另一种可能的解决方案是获取文档中第一个 div 和最后一个 div 之间的内容....

【问题讨论】:

  • 使用 DOM 解析器,而不是正则表达式,从 HTML 中提取信息。

标签: php file-get-contents


【解决方案1】:

使用标签开始和结束的'strpos()'获取字符串位置,然后使用子字符串方法,即带有此位置的substr()

【讨论】:

  • 谢谢,我可以用 substr() 和 strpos() 等来说话。
【解决方案2】:
$thehtml = file_get_contents($validlink);
$thehtml = preg_match("/<body.*?>(.*?)<\/body>/is", $thehtml,$matches);
$thehtml = $matches[0];

【讨论】:

    【解决方案3】:

    这是正确的代码:

    $thehtml = file_get_contents($validlink);
    preg_match('/<body.*?>(.*?)<\/body>/is', $thehtml, $matches);
    $thehtml = $matches[1];
    

    但我建议你改用DOM parser

    【讨论】:

    • 你会如何用 DOM Parser 来做呢? $thehtml = file_get_contents($validlink); $dumphtml = $thehtml->find('body')->innertext; ???
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-02
    • 1970-01-01
    相关资源
    最近更新 更多