3v4l.org

run code in 300+ PHP versions simultaneously
<?php $str = <<<'AHA' <section debug = 'mysection'> <div> <div id = 'current' debug ='container'> <p id = 'last' debug = 'message'> </p> </div> </div> </section> AHA; $doc = new DOMDocument(); libxml_use_internal_errors(true); $doc->loadHTML($str); libxml_clear_errors(); $node = $doc->getElementById('last'); function getDebugNodes($node) { while($node = $node->parentNode){ if($node->nodeType===1 AND$node->hasAttribute('debug')){ $snake[] = $node; } } return $snake; } //echo "\n" . $node->getAttribute('name') . $node->getAttribute('debug'); function make($snake, $index) { $path = ''; for($i = $index; $i < count($snake) - $index; $i++) { $path = "{$snake[$i]->getAttribute('debug')} $path"; } return $path; } $snake = getDebugNodes($node); array_unshift($snake, $node); //foreach($snake as $element){ // echo ' ' . $element->getAttribute('debug'); //} echo "\n" . make($snake, 0);
Output for 5.6.0 - 5.6.40, 7.0.0 - 7.0.33, 7.1.0 - 7.1.33, 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.28, 8.2.0 - 8.2.19, 8.3.0 - 8.3.7
mysection container message

preferences:
235.57 ms | 404 KiB | 290 Q