如何使用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
我该怎么做?
答案 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)
);