devi usare delle preg_replace

esempio:
Codice PHP:
# imposto gli array per il riconoscimento del vbcode
                
$array_ricerca = array(
                    
"{(\[)([bliu]+){1,2}(\])}",
                    
"{(\[/)([bliu]+){1,2}(\])}",
                    
"{\[center\](\r\n|\r|\n)*(.+)\[/center\]}siU",
                    
"{\[email\](\r\n|\r|\n)*([a-zA-Z0-9\._-]+@(([a-zA-Z0-9_-])+\.)+[a-z]{2,6})\[/email\]}siU",
                    
"{\[img\](\r\n|\r|\n)*((http|https)://([^;<>\*\(\)\"\s]+)|[a-z0-9/\\\._\- ]+)\[/img\]}siU",
                    
"{(\[)(url)(])((http|ftp|https)://)([^;<>\*\(\)\"\s]*)(\[/url\])}siU",
                    
"{(\[)(url)(=)(['\"]?)((http|ftp|https)://)([^;<>\*\(\)\"\s]*)(\\4])(.*)(\[/url\])}siU",
                    
"{\[.quote\](\r\n|\r|\n)*(.+)\[/quote\]}siU",# il punto è per il forum
                
);

                
$array_sostituzione = array(
                    
"<\\2>",
                    
"</\\2>",
                    
"<div align=\"center\">\\2</div>",
                    
"<a href=\"mailto:\\2\">\\2</a>",
                    
"<img src=\"\\2\" border=\"0\" alt=\"\">",
                    
"<a href=\"\\4\\6\" target=\"_blank\">\\4\\6</a>",
                    
"<a href=\"\\5\\7\">\\9</a>",
                    
"<center><div class=\"div_msg_quote\" align=\"left\">\\2</div></center>",
                );

                
# riconosco il vbcode
                
$stringa preg_replace($array_ricerca$array_sostituzione,$stringa); 
Io comunque userei direttamente l'html al posto del bbcode.