在 simple_html_dom 中,我如何在 div.classname 中找到第一级 <divs>

In simple_html_dom how do I find first-level <divs> within div.classname

我正在使用 simple_html_dom
我在 php var $text:

中有一些 html
<div class="aClass">
  <div>
    ...some html
    <div class="anotherClass">
      ..more html
    </div>
  </div>
  <div>
    ...some html
    <div class="anotherClass">
      ..more html
    </div>
  </div>
</div>

我知道我可以 select 最外层的 div $text->find("div.aClass")
相反,我想 select div 中的所有第一级 div,这样我就可以将它们作为 foreach 循环
的一部分进行处理 类似于:

foreach ($text->find("div.aClass div") as $myDiv) {
// do stuff with $myDiv
}

但这似乎 select 所有 divs,包括 class="anotherClass"

非常感谢任何帮助 - 谢谢!

您可以使用 then child combinator selector >,它只选择父元素的直接子元素。

div.aClass > div

例如

$html = <<<HTML
<div class="aClass">
  <div>
    ...some html
    <div class="anotherClass">
      ..more html
    </div>
  </div>
  <div>
    ...some html
    <div class="anotherClass">
      ..more html
    </div>
  </div>
</div>
HTML;

$text = str_get_html($html);

foreach ($text->find("div.aClass > div") as $myDiv) {
    echo $myDiv->innertext() . PHP_EOL;
}

输出

 ...some html     <div class="anotherClass">       ..more html     </div>   
 ...some html     <div class="anotherClass">       ..more html     </div>