2013-11-15 22 views
2

是否可以使用PHP的DOMXPath(或類似的替代方法)從以下結構中提取值bar而不是值foo使用PHP從DOM節點獲取內容但不從其子級獲取內容

<div> 
    <p><span>foo</span>bar</p> 
</div> 

我嘗試的所有迄今已從節點的後代,以及從節點本身,這是不是我想要在這種情況下返回的內容。

回答

2

最簡單的方法就是尋找那些都是p直接孩子文本節點:

$nodes = $xpath->query('//div/p/text()'); 

您可能要代替//div/不同的選擇,但關鍵位p/text()/表示「僅直接子節點」,而text()表示「僅文本節點」。所以他們在一起意味着「直接的孩子是文本節點」。

1

信貸應該去@lonesomeday因爲我更新了我的回答與他的方法:

$dom = new DOMDocument; 
$dom->loadHTML('<div><p><span>foo</span>bar</p></div>'); 

$xpath = new DOMXPath($dom); 
$nodes = $xpath->query('//div/p/text()'); 

foreach($nodes as $node) { 
    echo $node->nodeValue . '<br>'; 
} 

Read this tutorial與語法的更多幫助。

+0

感謝您的詳細解答和資源,兩者都非常有幫助! – Mark