从html中仅提取第一级段落

时间:2015-06-13 08:19:38

标签: 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>

我想只提取第一级<p>...</p>元素。

我尝试过使用优秀的simple_html_dom库,例如$html->find('#myID p')但在上面的情况中,它会找到所有三个<p>...</p>元素

有更好的方法吗?

1 个答案:

答案 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