PHP的DomDocument:获取顶级子节点列表

时间:2015-06-01 17:57:05

标签: php domdocument

我想从HTML字符串中获取顶级子节点列表。使用PHP的DomDocument,我尝试了以下内容:

tasks;;;richtext::rte_transform[flag=rte_disabled|mode=ts_css],

不幸的是,我得到的输出是

$html = new DomDocument();
$html->loadHTML('<p>One</p><p>Two</p><p>Three</p>');
foreach( $html->childNodes as $node ) {
    echo $node->nodeName . ':' . $node->nodeValue. '<br>';
}

我想要的是

html:
html:OneTwoThree

我错过了什么吗? PHP文档没有多大帮助。我尝试使用不同的PHP版本PHPTester,但仍然得到相同的结果。

2 个答案:

答案 0 :(得分:1)

您可以使用getElementsByTagName()方法:

$html = new DomDocument();
$html->loadHTML('<html><p>One</p><p>Two</p><p>Three</p></html>');
$nodes = $html->getElementsByTagName('p');
foreach($nodes as $node) {
    echo $node->nodeName . ':' . $node->nodeValue. '<br>';
}

// The above results in:
// p:One
// p:Two
// p:Three

我希望这相当于你的目的。

答案 1 :(得分:1)

请注意,DomDocument创建了一个完整的dom文档,而不仅仅是一个片段,因此p元素应位于body元素中。

foreach( $html->getElementsByTagName('body')->item(0)->childNodes as $node ) {