DOMDocument删除标记及其内容

时间:2015-02-24 20:24:06

标签: php xpath domdocument

我在抓取网站时遇到了一些问题。返回时的HTML非常好。我可以手动从站点复制它并将其存储在变量中,saveHTML()返回整个HTML。但是当以编程方式直接从站点注入DOMDocument时,由于某种原因,它会删除整个<body>标记,使其无效,因此我无法使用XPath进行查询。有谁知道为什么会这样?它唯一保留的是<head>和内容。

$dom = new DOMDocument();
$dom->loadHTML($html);

echo htmlentities($dom->saveHTML());

DOMDocument搞砸的HTML看起来像这样:

<!DOCTYPE html>
<html lang="sv">
   <head>
       <meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=EDGE">

       ....

   </head>
</html>

1 个答案:

答案 0 :(得分:0)

我设法找到了为什么DOMDocument在获取的HTML上窒息的罪魁祸首。它显然包含两个NUL(ASCII代码0x00)字符,根据官方HTML规范是禁止的。在加载HTML之前替换它们解决了这个问题。