3v4l.org

run code in 500+ PHP versions simultaneously
<?php $res = ' <html> <div class="product bla bla"> <div class="size">xxl</div> <div class="color yy">red</div> </div> <div class="product bla"> <div class="size xxs">xxs</div> <div class="line line2">new</div> </div> <div class="product asd"> <div class="color xx">blue</div> </div> </html> '; $dom = new DomDocument(); @ $dom->loadHTML($res); // utf8_decode $dom->preserveWhiteSpace = false; // ? $xpath = new DomXPath($dom); $nodes = $xpath ->query("//*[contains(@class, 'product')]"); echo "Found {$nodes->length} matching places" . PHP_EOL; foreach($nodes as $node){ $name = $xpath->query("*[contains(@class, 'color')]", $node); echo null === $name[0] ? 'NULL' : $name[0]->nodeValue; echo PHP_EOL; }
Output for 7.4.0 - 7.4.33, 8.0.1 - 8.0.30, 8.1.0 - 8.1.34, 8.2.0 - 8.2.31, 8.3.0 - 8.3.31, 8.4.1 - 8.4.22, 8.5.0 - 8.5.7
Found 3 matching places red NULL blue

preferences:
95.21 ms | 1267 KiB | 4 Q