fork download
  1. <?php
  2. $string='[div][li id="1"]text1[li]text2[/li]text3[/li][/div]';
  3. $pattern=':(?P<block>\[((?P<tag>[^\s\]]+)[^\]]*)\]((?&block)|[^\]]+)\[/((?P=tag))\]):';
  4. do{$string=preg_replace($pattern,'<$2>$4</$5>',$string,-1,$count);}while($count>0);
  5. echo $string;
  6.  
  7. // your code goes here
Success #stdin #stdout 0.01s 20520KB
stdin
Standard input is empty
stdout
<div><li id="1">text1<li>text2</li>text3</li></div>