<?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