3

我有以下html:

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

如果没有嵌套,我怎么能得到 body 的内容<div>?我需要获取“正文”,但不知道如何执行此操作。

运行的结果

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

是“正文 textdiv 内容”,这不是我想要得到的

4

3 回答 3

7

对于这样的问题,我更喜欢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;
}
于 2010-06-03T15:16:17.407 回答
3
$domhtml = DOMDocument::loadHTML($html);
print $domhtml->getElementsByTagName('body')->item(0)->textContent;
于 2010-06-03T14:35:11.017 回答
1

根据php.net的评论,这应该适合您:

$domhtml = DOMDocument::loadHTML($html); 
print $domhtml->getElementsByTagName('body')->firstChild->nodeValue;
于 2010-06-04T04:57:25.987 回答