2014-01-29 30 views
3

如何使用DOMDocument从ID mydiv中的第二个<p>标签获取内容?从HTML ysubg获得第二个p标签在特定ID内DOMDocument

例如,我的HTML可能看起来像:

<div class='mydiv'> 
<p><img src='xx.jpg'></p> 
<p>i need here</p> 
<p>lorem ipsum lorem ipsum</p> 
</div> 

我试图提取下面的文字:

i need here 

我该怎么办呢?

回答

3

充分利用第n <p>标签内容:

使用DOMDocument::getElementsByTagName()让所有的<p>标签,并用item()来检索返回DOMNodeList第二标签的节点值:

$index = 2; 

$dom = new DOMDocument; 
$dom->loadHTML($html); 
$tags = $dom->getElementsByTagName('p'); 
echo $tags->item(($index-1))->nodeValue; // to-do: check if that index exists 

从第n个<p>标签中获取标签内的ID,其ID为

如果要获取一个特定ID内<p>标签的节点值,那么你可以使用XPath表达式,而不是getElementsByTagName()

$index = 2; 
$id = 'mydiv' 

$dom = new DOMDocument; 
$dom->loadHTML($html); 

$xpath = new DOMXPath($dom); 
$tags = $xpath->query(
    sprintf('//div[@id="%s"]/p', $id) 
); 

Demo.

+0

谢谢你..但是..怎么样从div class ='mydiv'? – ersanyus

+0

@ user3147942,这不是你问的问题。但是,要做到这一点,您需要在Amal使用的'getElementsByTagName'内传递'div'。 –

+0

@ user3147942:更新了答案。 –