Witam mam taki dość prosty kod do BBCode tylko jest mały z nim problem gdyż niestety nie zmienia on całego tekstu
Przykład
[b][color=ff0000](*VIP*)[/color][color=329696]Bla[color=ff0000]<3[/color][/color][b]
i teraz (VIP) jest kolorowy Bla jest kolorowe ale <3 i nie pogrubia
Dokładniej zwraca to
[b](*VIP*)<Bla[color=ff0000]<3>[/color][b]
kod wygląda tak
$hm1 = array('#\[b\](.*?)\[/b\]#si', '#\[color=(.*?)\](.*?)\[/color\]#si');
$hm2 = array('<b>\\1</b>', '<font color="\\1">\\2</font>');
$nick = preg_replace($hm1, $hm2, htmlspecialchars("[color=ff0000](*VIP*)[/color][color=329696]Bla[color=ff0000]<3[/color][/color][b]"));