是否可以使用PHP的DOMXPath(或類似的替代方法)從以下結構中提取值bar
而不是值foo
?使用PHP從DOM節點獲取內容但不從其子級獲取內容
<div>
<p><span>foo</span>bar</p>
</div>
我嘗試的所有迄今已從節點的後代,以及從節點本身,這是不是我想要在這種情況下返回的內容。
是否可以使用PHP的DOMXPath(或類似的替代方法)從以下結構中提取值bar
而不是值foo
?使用PHP從DOM節點獲取內容但不從其子級獲取內容
<div>
<p><span>foo</span>bar</p>
</div>
我嘗試的所有迄今已從節點的後代,以及從節點本身,這是不是我想要在這種情況下返回的內容。
最簡單的方法就是尋找那些都是p
直接孩子文本節點:
$nodes = $xpath->query('//div/p/text()');
您可能要代替//div/
不同的選擇,但關鍵位p/text()
。 /
表示「僅直接子節點」,而text()
表示「僅文本節點」。所以他們在一起意味着「直接的孩子是文本節點」。
信貸應該去@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與語法的更多幫助。
感謝您的詳細解答和資源,兩者都非常有幫助! – Mark