Tutorial de BBCode

Ensinamos a criar seu próprio BBCode com PHP.

Por Antonio Melé


Publicado em: 25/1/08
Valorize este artigo:
Introdução

BBCode é uma implementação especial do HTML. Servirá para simplificar o código HTML de modo que nossos usuários possam utilizá-lo ao enviar notícias a nossa web, deixar suas mensagens em nosso fórum, etc. Usaremos em todo tipo de formulários nos que quisermos que o usuário possa inserir links, imagens, tabelas, imoticonos, etc. de forma simples e sem necessidade de ter conhecimentos sobre HTML.

O BBCode se utiliza de uma forma similar a linguagem HTML: Utilizam-se etiquetas entre colchetes da seguinte maneira: Usaremos [etiqueta] para abrir a etiqueta e [/etiqueta] para fechá-la.

Muitos conhecidos sistemas de fóruns e plataformas de gerenciamento de conteúdos web utilizam BBCode. Por exemplo phpBB ou SMF

Veremos o esquema de envio de texto + BBCode para incluir uma imagem. O usuário escreveria no textarea de um formulário:

[imagem]http://www.meu_servidor.com/minha_imagem.jpg[/imagem]


E ao enviá-la substituiríamos mediante uma função em PHP as etiquetas [imagem] e [/imagem] por código HTML, ficando da seguinte maneira:

<img src="http://www.meu_servidor.com/minha_imagem.jpg" />


Isto nos permite usar como quisermos as etiquetas. Se utilizamos um banco de dados podemos salvar as mensagens enviadas em modo texto e BBCode tal como foram redigidas e para mostrá-las utilizar uma função PHP para substituir o código BBCode pelo código HTML correspondente.

Criando nossos BBCodes com PHP

Definiremos as etiquetas BBCode que nós queremos com o código HTML que lhes corresponda e criaremos uma função com PHP para substituir os BBCodes escritos pelo usuário por código HTML. Utilizaremos a função STR_REPLACE() de PHP para substituir as etiquetas BBcode por HTML.

Primeiro, associaremos o código HTML a etiquetas elementares de BBCode mediante um array. Logicamente, vocês podem criar suas próprias etiquetas com o código HTML que quiserem:

<?php

$bb_code = array(
// emoticonos: deve apontar a suas imagens no código HTML
':)' => '<img src="feliz.gif" />',
':(' => '<img src="triste.gif" />',
':D' => '<img src="contente.gif" />',

// letra negrito
'[b]' => '<span style="font-weight:bold">',
'[/b]' => '</span>',

// letra cursiva
'[i]' => '<span style="font-style:italic">',
'[/i]' => '</span>',

// letra sublinhada
'[u]' => '<span style="text-decoration:underline">',
'[/u]' => '</span>',

// quebra de linha
'[quebra]' => '<br><br>',

// imagens
'[imagem]' => '<img src="',
'[/imagem]' => '" />'

// lembrem que depois do último elemento não há vírgula
);
?>


Agora utilizaremos uma função para substituir as etiquetas BBCode por código HTML:

<?php
function substituir( $codigo )
{
$search = array_keys( $GLOBALS['bb_code'] );
$codigo = str_replace( $search, $GLOBALS['bb_code'], $codigo );
return $codigo;
}
?>


Neste exemplo $codigo é a variável na que passaremos à função com o texto+BBCode que tiver escrito o usuário.

Agora vamos a ver o código completo pronto para ser provado que inclui os códigos anteriores com um texto+BBCode de exemplo:

<?php

// definimos nossas etiquetas
$bb_code = array(
// emoticonos: deve apontar a suas imagens no código HTML
':)' => '<img src="feliz.gif" />',
':(' => '<img src="triste.gif" />',
':D' => '<img src="contente.gif" />',

// letra negrito
'[b]' => '<span style="font-weight:bold">',
'[/b]' => '</span>',

// letra cursiva
'[i]' => '<span style="font-style:italic">', < '[/i]' => '</span>',

// letra sublinhada
'[u]' => '<span style="text-decoration:underline">',
'[/u]' => '</span>',

// quebra de linha
'[quebra]' => '<br><br>',

// imagens
'[imagem]' => '<img src="',
'[/imagem]' => '" />'

// lembrem que depois do último elemento não há vírgula
);

// Definimos nossa mensagem de prova
$mensagem = 'Esta palavra está em [b]negrito[/b] e [u]isto está sublinhado.[/u] '
.'[salto]Este é o logo de criarweb: [quebra]'
.'[imagem]http://www.criarweb.com/images/logo-criarweb.gif'
.'[/imagem]';

// Substituímos o BBCode pelo código HTML e o mostramos na página
echo '<p>'.substituir ( $mensagem ).'</p>';

// Incluímos a função para substituir o código
function substituir ( $codigo )
{
$search = array_keys( $GLOBALS['bb_code'] );
$codigo = str_replace( $search, $GLOBALS['bb_code'], $codigo );
return $codigo;
}
?>

Para trabalhar com formulários só temos que substituir $mensagem pelo valor enviado através do formulário. Por exemplo, colocaríamos um campo textarea chamado "mensagem" no formulário que apontará ao nosso script PHP e neste mudaríamos o valor de $mensagem por $HTTP_POST_VARS['mensagem']

Espero que este tutorial tenha sido de utilidade para muita gente.





Comentários do artigo
Foi enviado 1 comentário ao artigo
1 comentário não revisado
0 comentários revisados

Usuários :    login / registro

Manuais relacionados
Categorias relacionadas
O autor

Home | Sobre nós | Copyright | Anuncie | Entrar em contato