3v4l.org

run code in 300+ PHP versions simultaneously
<?php $html = <<<HTML <div class="pd_warranty col-xs-12 no-padding"> <p class="selectWty txtLeft">Available Options</p> <div class="vspace clear"></div> <div class="subProd col-xs-4 noPadLR"> <a href="https://www.example.com/single” class="selected"> <div class="col-xs-12 cellTable pad5All"> <div class="col-xs-8 noPadLR cellTableCell"> <p class="noMar txtLeft">Single</p> <p class="noMar txtLeft sml">$99.99</p> </div> </div> </a> </div> <div class="subProd col-xs-4 noPadLR"> <a href="https://www.example.com/2pack” class=""> <div class="col-xs-12 cellTable pad5All"> <div class="col-xs-8 noPadLR cellTableCell"> <p class="noMar txtLeft">2-PACK</p> <p class="noMar txtLeft sml">$159.99</p> </div> </div> </a> </div> <div class="subProd col-xs-4 noPadLR"> <a href="https://www.example.com/4pack” class=""> <div class="col-xs-12 cellTable pad5All"> <div class="col-xs-8 noPadLR cellTableCell"> <p class="noMar txtLeft">4-PACK</p> <p class="noMar txtLeft sml">$249.99</p> </div> </div> </a> </div> </div> HTML; $dom = new DOMDocument; $dom->loadHTML(str_replace ('”', '"', $html)); // normalize the quoting; extend as needed $xpath = new DOMXPath($dom); // actually targeting this div ---------vvv foreach ($xpath->evaluate("//div[contains(@class, 'subProd')]//div[contains(p/@class, 'noMar')]") as $div) { $type = $xpath->query("p[contains(@class, 'noMar') and not(contains(@class, 'sml'))]", $div)[0]->nodeValue; $price = $xpath->query("p[contains(@class, 'noMar') and contains(@class, 'sml')]", $div)[0]->nodeValue; $result[$type] = $price; } var_export($result);
Output for 7.1.0 - 7.1.25, 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.33, 8.2.0 - 8.2.29, 8.3.0 - 8.3.27, 8.4.1 - 8.4.14
array ( 'Single' => '$99.99', '2-PACK' => '$159.99', '4-PACK' => '$249.99', )

preferences:
158.08 ms | 407 KiB | 5 Q