<?php
$html = '
<p>%firstname%</p>
<p>%<span>firstname</span>%</p>
<p>%<span class="blah">firstname</span>%</p>
<p>%<span><span>firstname</span></span>%</p>
<p>%<span><span><span>firstname</span></span></span>%</p>
<p>%<span class="blah"><span>firstname</span></span>%</p>
<div>A cool div with %firstname%</div>
<span>And a very neat span with %firstname%</span>';
$dom = new DOMDocument();
$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
# query only root elements here
$containers = $xpath->query("/*");
foreach ($containers as $container) {
echo $container->textContent . "\n";
}
?>
PD9waHAKCiRodG1sID0gJwogICAgPHA+JWZpcnN0bmFtZSU8L3A+CiAgICA8cD4lPHNwYW4+Zmlyc3RuYW1lPC9zcGFuPiU8L3A+CiAgICA8cD4lPHNwYW4gY2xhc3M9ImJsYWgiPmZpcnN0bmFtZTwvc3Bhbj4lPC9wPgogICAgPHA+JTxzcGFuPjxzcGFuPmZpcnN0bmFtZTwvc3Bhbj48L3NwYW4+JTwvcD4gICAgCiAgICA8cD4lPHNwYW4+PHNwYW4+PHNwYW4+Zmlyc3RuYW1lPC9zcGFuPjwvc3Bhbj48L3NwYW4+JTwvcD4KICAgIDxwPiU8c3BhbiBjbGFzcz0iYmxhaCI+PHNwYW4+Zmlyc3RuYW1lPC9zcGFuPjwvc3Bhbj4lPC9wPgogICAgPGRpdj5BIGNvb2wgZGl2IHdpdGggJWZpcnN0bmFtZSU8L2Rpdj4KICAgIDxzcGFuPkFuZCBhIHZlcnkgbmVhdCBzcGFuIHdpdGggJWZpcnN0bmFtZSU8L3NwYW4+JzsKCiRkb20gPSBuZXcgRE9NRG9jdW1lbnQoKTsKJGRvbS0+bG9hZEhUTUwoJGh0bWwpOwoKJHhwYXRoID0gbmV3IERPTVhQYXRoKCRkb20pOwoKIyBxdWVyeSBvbmx5IHJvb3QgZWxlbWVudHMgaGVyZQokY29udGFpbmVycyA9ICR4cGF0aC0+cXVlcnkoIi8qIik7CmZvcmVhY2ggKCRjb250YWluZXJzIGFzICRjb250YWluZXIpIHsKCWVjaG8gJGNvbnRhaW5lci0+dGV4dENvbnRlbnQgLiAiXG4iOwp9Cj8+