这里我如何得到我的dom树:
$html = file_get_contents('somefile.html');
$dom = new DOMDocument();
@$dom->loadHTML($html);
$dom_document = new DomXPath($dom);
$dom_object = $dom_document->query('somePathHere');
$ dom_object的html结构:
<div>
<a href='something'>some text here</a>
I want this
</div>
这就是我需要的:
foreach($dom_object as $value){
echo $value->getElementsByTagName('a')->item(0)->nodeValue; //working properly
echo 'I want this' // I don't know how to get that 'I want this' text
}
精度:我想避免必须进行多个xpath查询。我想坚持我的...提前谢谢你。干杯。马克
答案 0 :(得分:0)
使用nodeType获取文本节点:
foreach($nodes as $node) {
if($node -> nodeType == 3) {
echo $node -> nodeValue . "<br />";
}
}
说明:在php DOMDocument中,任何文本都在节点内。在您的情况下,它是一个文本节点,根据PHP的XML_NODE_CONSTANTS
表示3答案 1 :(得分:0)
我不知道xml的预期结构,但这适用于您的特定请求:
/html/body/div/text()
这将仅选择具有div的直接父级的文本节点。您也可以使用常规//div/text()
,但更具体的查询通常更好/更快。