Given this DOM
$html=<<<'EOD'
<div class='container clickable' data-param='{"footer":"<div>Bye</div>","info":"We win"}'>
<img src='a.jpg' />
</div>
<a href='a.html'>The A</a>
<span></span>
<span data-span-param='{"detailTag":"<span class=\"link\">Anything here</span>"}'>
<a></a>
</span>
EOD;
I am trying to preg_match_all html tags with using this expression:
$tags = array();
if(preg_match_all('~<\s*[\w]+[^>]*>|<\s*/\s*[\w]+\s*>~im',$html,$matchall,PREG_SET_ORDER)){
foreach($matchall as $m){
$tags[] = $m[0];
}
}
print_r($tags);
The output of this expression is:
Array
(
[0] => < div class='container clickable' data-param='{"footer":"< div>
[1] => < /div>
[2] => < img src='a.jpg' />
[3] => < /div>
[4] => < a href='a.html'>
[5] => < /a>
[6] => < span>
[7] => < /span>
[8] => < span data-span-param='{"detailTag":"< span class=\"link\">
[9] => < /span>
[10] => < a>
[11] => < /a>
[12] => < /span>
)
My expected output is this:
Array
(
[0] => < div class='container clickable' data-param='{"footer":"< div>Bye< /div>","info":"We win"}'>
[1] => < img src='a.jpg' />
[2] => < /div>
[3] => < a href='a.html'>
[4] => < /a>
[5] => < span>
[6] => < /span>
[7] => < span data-span-param='{"detailTag":"< span class=\"link\">Anything here< /span>"}'>
[8] => < a>
[9] => < /a>
[10] => < /span>
)
I need a help with an expression to solve this problem.