Php 仅从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',但在上面

我有以下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',但在上面的例子中,这会找到所有三个..

元素


有更好的方法吗?

不必使用外部库,为什么不使用内置类来处理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',则仍然返回所有段落