3v4l.org

run code in 150+ php & hhvm versions
Bugs & Features
<?php $html_string = '<!DOCTYPE html> <html> <body> <div id="foo"> This is a paragraph with <strong>Some nested tags</strong> </div> <div class="test" id="bar"> <div> And a nested div? </div> </div> <div class="baz test"> <p> Pretty normal HTML. </p> </div> </body> </html>'; $regex = '/<div[^>]*?(class="(.+?)"[^>]*)?>((?:.*?(?:(?!<div)|(?R))*)*)' . '<\/div>/sm'; if (preg_match_all($regex, $html_string, $matches, PREG_SET_ORDER)) { var_dump($matches); }
Output for 4.3.0 - 5.6.28, hhvm-3.10.0 - 3.12.0, 7.0.0 - 7.1.0
array(3) { [0]=> array(4) { [0]=> string(88) "<div id="foo"> This is a paragraph with <strong>Some nested tags</strong> </div>" [1]=> string(0) "" [2]=> string(0) "" [3]=> string(68) " This is a paragraph with <strong>Some nested tags</strong> " } [1]=> array(4) { [0]=> string(77) "<div class="test" id="bar"> <div> And a nested div? </div> </div>" [1]=> string(21) "class="test" id="bar"" [2]=> string(4) "test" [3]=> string(44) " <div> And a nested div? </div> " } [2]=> array(4) { [0]=> string(70) "<div class="baz test"> <p> Pretty normal HTML. </p> </div>" [1]=> string(16) "class="baz test"" [2]=> string(8) "baz test" [3]=> string(42) " <p> Pretty normal HTML. </p> " } }