我想从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,但仍然得到相同的结果。
答案 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 ) {