从HTML ysubg DOMDocument获取特定ID中的第二个p标记

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

标签: php dom domdocument domxpath

如何使用DOMDocument从ID为<p>的div中的第二个mydiv标记中获取内容?

例如,我的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

我该怎么做?

1 个答案:

答案 0 :(得分: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

从具有给定ID的div中的第n个<p>标记获取内容

如果要检索特定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.