Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Firewords

Tutorial para criar bbcodes.

Recommended Posts

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.