2015-06-01 70 views
1

我想從HTML字符串中獲取頂級子節點列表。使用PHP的的DomDocument,我試過如下:PHP的DomDocument:獲取頂級子節點列表

$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 

如果我要的是像

paragraph: One 
paragraph: Two 
paragraph: Three 

我缺少的東西? PHP文檔不是很有幫助。我嘗試使用不同的PHP版本PHPTester,仍然得到相同的結果。

回答

1

請記住DomDocument創建一個完整的dom文檔不只是一個片段,所以你p元素應該在body元素。

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

謝謝!這樣可行 :) – gosukiwi

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 

我希望這相當於爲您的目的。

+0

非常感謝! :) – gosukiwi