2015-02-24 118 views
0

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

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

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

是DOM文档砸了看起来像这样的HTML:

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

     .... 

    </head> 
</html> 
+0

该文件是否有''? :)只是问,因为我在这里用HTML文档尝试了同一段代码,结果很好。 – 2015-02-24 20:30:52

+0

@WilliamJanoti当然是的,为什么我会被这个问题困扰呢? – silkfire 2015-02-24 20:32:01

+2

请显示一个可供人们用来重现此问题的最小但完整的PHP代码示例。另外,说出你正在讨论的HTML页面并链接到它。 – 2015-02-24 20:40:55

回答

0

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

相关问题