Search code examples
phpdomdomdocument

DOMDocument Check if html code is in <h2> tag


I have a function that get all <h2> using DOMDocument, Now I want to check if there is any HTML tag between <h2>[here]</h2>, don't get the <h2> and skip to next.

My Code:

    foreach ($DOM->getElementsByTagName('*') as $element) {
       if ($element->tagName == 'h2') {
         $h = $element->textContent;
        }
     }

Solution

  • I think the easiest thing is to just reuse getElementsByTagName("*") on the element and count how many items are found.

    $html = <<<EOT
    <html><body><h2>Hello</h2> <h2>World</h2><h2><strong>!</strong></h2></body></html>
    EOT;
    
    $dom = new DOMDocument();
    $dom->loadHTML($html);
    foreach($dom->getElementsByTagName('h2') as $h2) {
        if(!count($h2->getElementsByTagName('*'))){
            var_dump($h2->textContent);
        }
    }
    

    Demo here: https://3v4l.org/dI1e4