Php 仅从html中提取第一级段落
我有以下html:Php 仅从html中提取第一级段落,php,Php,我有以下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> 我只想提取第一级…元素 我尝试过使用优秀的simple_html_dom库,例如$html->find'myID p',但在上面
<div id="myID">
<p>I want this</p>
<p>and I want this</p>
<div>
<p>I don't want this</p>
</div>
</div>
我只想提取第一级…元素
我尝试过使用优秀的simple_html_dom库,例如$html->find'myID p',但在上面的例子中,这会找到所有三个..元素
有更好的方法吗?不必使用外部库,为什么不使用内置类来处理dom呢 首先使用HTML创建一个实例:
$dom = new DOMDocument();
$dom->loadHtml($yourHtml);
在此之后,使用以下选项选择图元:
$xpath = new DOMXpath($dom);
$nodes = $xpath->query("//*[@id='myID']/p");
var_dump($nodes->length); // outputs 2
这将选择id为myID的元素的直接子元素的所有p元素 与其使用一些外部库,不如直接使用内置类来处理dom 首先使用HTML创建一个实例:
$dom = new DOMDocument();
$dom->loadHtml($yourHtml);
在此之后,使用以下选项选择图元:
$xpath = new DOMXpath($dom);
$nodes = $xpath->query("//*[@id='myID']/p");
var_dump($nodes->length); // outputs 2
这将选择id为myID的元素的直接子元素的所有p元素 如果该对象在选择器中有这样的方法或>,请尝试使用children方法:$html->find'myID>p',如果该对象有这样的方法,请使用children方法返回所有段落;如果选择器中有>方法:$html->find'myID>p',则仍然返回所有段落