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

时间:2010-06-03 14:30:06

标签: php html xml parsing domdocument

我有以下html:

<html ><body >Body text <div >div content</div></body></html>

如何在没有嵌套<div>的情况下获取正文内容? 我需要获取“正文”,但不知道如何做到这一点。

运行结果

$domhtml = DOMDocument::loadHTML($html);
print $domhtml->getElementsByTagName('body')->item(0)->nodeValue;

是'Body textdiv content',这不是我想要的

3 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:2)

$domhtml = DOMDocument::loadHTML($html);
print $domhtml->getElementsByTagName('body')->item(0)->textContent;

答案 2 :(得分:0)

基于php.net的评论这应该适合您:

$domhtml = DOMDocument::loadHTML($html); 
print $domhtml->getElementsByTagName('body')->firstChild->nodeValue;