簡體   English   中英

從HTML僅提取第一級段落

[英]Extract only first level paragraphs from html

我有以下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的元素的直接子元素。 演示版

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM