DOMDocument提取部分网页(任何编码)?

时间:2010-08-10 17:09:14

标签: php html-parsing

<body></body>标签之间的整个网页内容存储在字符串中的代码是什么?

  • 可以是任何HTML / XHTML页面
  • 可以是任何编码(ISOx,UTF-8,亚洲东西)
  • 可以在<body>中使用属性(可能会欺骗解析器)

我听说过DOMDocument,但我是一个很棒的新手,一些代码示例会有所帮助!

2 个答案:

答案 0 :(得分:1)

$d = new DOMDOcument();
libxml_use_internal_errors(true);
$d->loadHTMLFile("http://stackoverflow.com");
$b = $d->getElementsByTagName("body")->item(0);
if ($b !== null) {
    echo simplexml_import_dom($b)->asXML();
}

这也包括<body>标记,内容将被修改为格式良好的XML。

没有正文标记(虽然现在我们没有单个根,因此没有格式良好的XML):

$d = new DOMDOcument();
libxml_use_internal_errors(true);
$d->loadHTMLFile("http://stackoverflow.com");
$b = $d->getElementsByTagName("body")->item(0);
if ($b !== null) {
    for ($n = $b->firstChild; $n !== null; $n = $n->nextSibling) {
        echo simplexml_import_dom($n)->asXML();
    }
}

答案 1 :(得分:0)

发现this解决了这个问题!