我有以下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>
元素
有更好的方法吗?
答案 0 :(得分:4)
不必使用某些外部库,为什么不使用内置类来处理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
的元素的直接子元素。 Demo