我有以下html:
<div id="myID">
<p>I want this</p>
<p>and I want this</p>
<div>
<p>I don't want this</p>
</div>
</div>
我只想提取第一级<p>...</p>
元素。
我尝试使用出色的simple_html_dom
库,例如 $html->find('#myID p')
但在上面的情况下,这找到了所有三个<p>...</p>
元素
有没有更好的方法可以做到这一点?
与其使用一些外部库,为什么不直接使用内置类来处理 dom?
首先使用 HTML 创建一个 DOMDocument 实例:
$dom = new DOMDocument();
$dom->loadHtml($yourHtml);
之后,使用 DOMXPath 选择您的元素:
$xpath = new DOMXpath($dom);
$nodes = $xpath->query("//*[@id='myID']/p");
var_dump($nodes->length); // outputs 2
这将选择所有p
元素,这些元素是 id 为 myID
的元素的直接子元素。演示