Firewords 0 Denunciar post Postado Outubro 25, 2005 Fazer bbcodes igual essas que tem em fórum é muito fácil! Só precisa de 3 variáveis, sendo que duas são arrays e uma que quarda o texto. Vamos ao script que eu criei, depois eu dou uma explicação: <?/* Criado por Firewords, http://www.firestorm.com.br*//* Classe Tags */class Tags { var $texto; var $br; // Função de substituir as tag por HTML function Tirar($str = 0) { // Array de Tags $tag = array('/\n/', '/\[b\]/', '/\[\/b\]/', '/\[i\]/', '/\[\/i\]/', '/\[center\]/', '/\[\/center\]/'); // Tags dos códigos em HTML $para = array('<br />', '<b>', '</b>', '<i>', '</i>', '<center>', '</center>'); // Substituindo Tags por HTML $this->br = preg_replace($tag, $para, htmlentities($this->texto)); return true; }}// Verificando de Texto foi escritoif(isset($_POST['texto'])) { // Caregando função $tags = new Tags; $tags->texto = $_POST['texto']; $tags->Tirar; echo ("<hr /><p style=\"white-space:pre\">").($tags->br).("</center></i></b></div></p><hr /><br />");}?><h3 style="text-decoration:underline">Digite seu texto aqui</h3><form method="post" action="<?= $_SERVER['PHP_SELF']; ?>"><textarea rows="10" cols="45" name="texto"></textarea><br /><bR /><input type="submit" value="Enviar" /><br /></form>Esse script não serve somente para bbcodes, também serve pra identificar o "quebra-linha" de uma área de texto e transformar pra um <br />. Agora vamos as explicações... Logo no começo você viu uma Classe e duas Variáveis, uma variável ($texto) serve para quardar o que o cara escrevel, e a outra ($br) serve para quardar o texto com todas as tags transformadas para HTML. A função tem dois arrays, o primeiro quarda os bbcodes que podem ser identificados no texto, e o segundo são as tags HTML que vão substituir os bbcodes. Atensão: os bbcodes ([ b ], [ i ], ...) devem estar nas mesma posições dos HTML que iram substituir. Agora dexa eu explicar como funcionam as barras que estão nos bbcodes. Primeiramente você deve saber que se tratando do preg_relpace, deve-se começar e terminar a tag (ou seja lá o que for) com a barra para a direita /. Assim ficando uma no começo e uma no final, e a barra pra esquerda \, serve pra "mostrar" o simbolo, por exemplo o \[ ou o \/.... duvidas? Após ter feito isso, só mandar fazer o preg_replace e igualar a variável $br da classe, igual mostra a linha lá. E você deve saber também que o preg_replace funciona assim: preg_replace(Tags do texto, HTML para as tags, Texto). Pronto! Simples não? :smiliz4: Compartilhar este post Link para o post Compartilhar em outros sites
red neck * 0 Denunciar post Postado Novembro 1, 2005 cara legal sua iniciativa ^^vou te dar uma dica para a regex, tu poderia faze assim: <?function bbCode($str){ $str=htmlentities($str); $tags=array( "bold"=>"b", "italic"=>"i", ); foreach($tags as $k=>$v){ $str=preg_replace("#\[".$k."\](.*?)\[\/".$k."\]#i","<".$v.">\\1</".$v.">",$str); } return nl2br($str);}$str="[bold]Oi[/bold][italic]test[/italic]test2";echo bbCode($str);?>[]'s Compartilhar este post Link para o post Compartilhar em outros sites
Firewords 0 Denunciar post Postado Novembro 4, 2005 Uhn... gostei muito! Não sei ainda usar o foreach, mas vou estudar imediatamente! xD Compartilhar este post Link para o post Compartilhar em outros sites
sipmann 2 Denunciar post Postado Setembro 9, 2007 interessante veio!! mas o primeiro bbcode ali n funciona e o segundo dava pra melhora! mas ta show!!! tive umas ideias e juntando os 2 vai fica show!!!VLW! Compartilhar este post Link para o post Compartilhar em outros sites
_M!K0L_ 1 Denunciar post Postado Outubro 6, 2007 jeito mais simples... bbcode.php PHP <?if (isset($_POST['TEXTO'])) { $texto = $_POST['TEXTO']; $tag = array('/n/', '/[b]/', '/[/b]/', '/[i]/', '/[/i]/', '/[center]/', '/[/center]/'); $para = array('<br />', '<b>', '</b>', '<i>', '</i>', '<center>', '</center>'); $texto = preg_replace($tag, $para, htmlentities($texto)); echo $texto; } ?> <form action="bbcode.php" method="POST"> <textarea id="TEXTO" name="TEXTO"></textarea> <input type="submit" value="Enviar"> </form> outro jeito mais simples e mais facil de compreender... bbcode1.php PHP <?if (isset($_POST['TEXTO'])) { $texto = $_POST['TEXTO']; $bb[0] = "/[b]/"; $bb[1] = "/[/b]/"; $bb_r[0] = "<b>"; $bb_r[1] = "</b>"; $bb[2] = "/[i]/"; $bb[3] = "/[/i]/"; $bb_r[2] = "<i>"; $bb_r[3] = "</i>"; $bb[4] = "/[center]/"; $bb[5] = "/[/center]/"; $bb_r[4] = "<center>"; $bb_r[5] = "</center>"; ksort($bb); ksort($bb_r); $texto = preg_replace($bb, $bb_r, htmlentities($texto)); echo $texto; } ?> <form action="bbcode1.php" method="POST"> <textarea id="TEXTO" name="TEXTO"></textarea> <input type="submit" value="Enviar"> </form> Compartilhar este post Link para o post Compartilhar em outros sites