2014-01-20 33 views
1

如何通過DOMDocument()獲得特定ID內的段落標記?如何通過DOMDocument從div中的段落標記獲取內容?

例如,HTML是這樣的:

<div id='content'> 
xxx yyyy zzzz 


fffuuu uuuueee 
xxx yyyy pppppp zzzz 

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

我只是想好好P標籤內容ID DIV ...

注1:我獲得與DIV的全部內容:

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

注2:不要說getElementsByTagName;該HTML包含太多P標籤。

+0

嗯......爲什麼你那麼得到'p'內容標籤裏面的ID爲'content'的div標籤裏面? – Peon

回答

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

謝謝你..它的工作原理! :) – ersanyus

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