domDocument没有返回节点信息

时间:2016-07-08 06:20:02

标签: php dom domdocument

我正在尝试获取外部页面的DOM元素。基于我正在尝试的其他帖子:

$html = htmlentities(file_get_contents('http://www.slate.com'));    
$dom = new domDocument;
$dom->loadHTML($html);
echo "<pre>";
var_dump($dom);
echo "</pre>";

(Html entites杀死警告,但其他结果与留下警告相同)。

根据我读过的内容,这应该返回父/子节点中的各种DOM部分。但上面代码的结果不包含DOM节点,只包含一个包含整个页面HTML的巨大“textContent”元素。

提前感谢您对我做错的想法。

2 个答案:

答案 0 :(得分:1)

您正在寻找

$dom->documentElement

这将返回

DOMNode

对象。

另外:摆脱htmlentities,因为这会弄乱你提取的HTML代码。例如:<将获得&ltloadHTML不会将其解释为<。看看:Disable warnings when loading non-well-formed HTML by DomDocument (PHP)

虚拟-转储:

function dump(DOMNode $node)
{
    echo $node->nodeName;
    if ($node->hasChildNodes())
    {
        echo '<div style="margin-left:20px; border-left:1px solid black; padding-left: 5px;">';
        foreach ($node->childNodes as $childNode)
        {
            dump($childNode);
        }
        echo '</div>';
    }
}

dump($dom->documentElement);

看起来像:

Dummy-Dump

答案 1 :(得分:0)

您应该考虑使用phpQuery(https://github.com/electrolinux/phpquery)。