Função de Leitura do BBCode
Estou fazendo um sistema de BBCode mas quando faço a leitura para transforma-lo em html estou tendo um problema. Quando temos uma tag dentro da outra (igual) a primeira tag fecha com o primeiro fechamento. Ex: [QU0TE] [QU0TE] [/QU0TE] [/QU0TE]
Um amigo me disse que eu devo fazer um loop para contar quantas tags tem e ir transformando de dentro para fora. Alguém me ajuda?
PHP:
public static function BBCode($texto){
$texto = preg_replace( "/\[b\](.*?)\[\/b\]/i", "<b>$1</b>", $texto );
$texto = preg_replace( "/\[i\](.*?)\[\/i\]/i", "<i>$1</i>", $texto );
$texto = preg_replace( "/\[u\](.*?)\[\/u\]/i", "<u>$1</u>", $texto );
$texto = preg_replace( "/\[center\](.*?)\[\/center\]/i", "<center>$1</center>", $texto );
$texto = preg_replace( "/\[img\](.*?)\[\/img\]/i", "<img src=\"$1\"/>", $texto );
$texto = preg_replace( "/\[url=(.*?)\](.*?)\[\/url\]/i", "<a href=\"$1\" target=\"_blank\">$2</a>", $texto);
$video = substr(preg_replace( "/\[youtube\](.*?)\[\/youtube\]/i", "$1", $texto ), -11);
$texto = preg_replace( "/\[youtube\](.*?)\[\/youtube\]/i", "<center><iframe width=\"550\" height=\"305\" src=\"https://www.youtube.com/embed/$video\" frameborder=\"0\" allowfullscreen></iframe></center>", $texto );
$texto = preg_replace( "/\[quote\](.*?)\[\/quote\]/i", "<div id=\"quote\">$1</div>", $texto );
return $texto;
}Discussão (3)
Carregando comentários...