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;

「Body 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 に答える