如何通过DOMDocument从div中的段落标签获取内容?

时间:2014-01-20 12:08:29

标签: php dom xpath domxpath

如何通过DOMDocument()在特定ID中获取段落标记?

例如,HTML就是这样:

<div id='content'>
xxx yyyy zzzz


fffuuu uuuueee
xxx yyyy pppppp zzzz

<p>i need only this line</p>
</div>

我只想在内容标识P ...

中使用DIV标记

注1:我通过以下方式获取DIV的全部内容:

$doc = new DOMDocument();
@$doc->loadHTML($html);
$xpath = new DOMXPath($doc);
$newcontent = $xpath->query("//*[@id='content']");

注2:不要说getElementsByTagName; HTML包含太多P个标记。

2 个答案:

答案 0 :(得分:3)

我敢于getElementsByTagName :) - 您根本不需要xpath

$doc = new DOMDocument();
@$doc->loadHTML($html);
$p=$doc->getElementById('content')->getElementsByTagName('p')->item(0);
echo $p->nodeValue;

输出

i need only this line

答案 1 :(得分:1)

更改XPath表达式:

$newcontent = $xpath->query("//*[@id='content']/p");
echo $newcontent->item(0)->nodeValue;

输出:

i need only this line

如果您需要来自多个段落标记的文本,请使用foreach循环:

foreach ($newcontent as $tag) {
    echo $tag->nodeValue;
}

Demo