通过DOMDocument获取具有子节点的节点的内容

alt*_*ern 2 html php xml parsing domdocument

我有以下html:

<html ><body >Body text <div >div content</div></body></html>
Run Code Online (Sandbox Code Playgroud)

如果没有嵌套,我怎么能得到身体的内容<div>?我需要获取"正文",但不知道如何做到这一点.

跑步的结果

$domhtml = DOMDocument::loadHTML($html);
print $domhtml->getElementsByTagName('body')->item(0)->nodeValue;
Run Code Online (Sandbox Code Playgroud)

是'正文textdiv内容',这不是我想要的

dna*_*irl 5

我更喜欢DOMXPath这样的问题.它非常灵活

$domhtml = DOMDocument::loadHTML($html); 
$xpath = new DOMXPath($domhtml);
$query="/html/body/text()"; //gets all text nodes that are direct children of body

$txtnodes = $xpath->query($query);

foreach ($txtnodes as $txt) {
    echo $txt->nodeValue;
}
Run Code Online (Sandbox Code Playgroud)