khuderm khuderm - 1 month ago 8
CSS Question

Simple HTML DOM - Child Selectors (CSS)

I am trying to select a (direct) child of parents

div.element
using the
>
combinator, but it's failing.

HTML:

<div class="element">
<p>test</p>
</div>

<div class="element">
<div class="selected">
<p>test2</p>
</div>
</div>


PHP:

$html->find('div.element > p', 0);


I am looking to select the direct
p
element.

If it's a nested descendant - it shouldn't return anything, but it returns
test2
.

How can I write it to return
test
, but not
test2
? Thanks

UPDATE: The general consensus here on SO seems to be that Simple HTML DOM is bad. I ended up writing my code using PHP's
DOMDocument
as suggested by Phil. I did test out nevermind's solution and it did work as well. Thanks for all the help and Happy Coding

Answer

Well, this should (must, actually:)) work (tested on 4 divs):

foreach($html->find('div.element') as $element) {


$paragraph=$element->find('p',0);

    if($paragraph==$element->first_child())
    echo $paragraph;

}
Comments