+1

PEAR: Usando o pacote HTML_BBCodeParser

criado por Herbert Araujo em 27/01/2006 7:19am
O Array contido no primeiro bloco de código são pre-configurações que devem ser passadas para a classe HTML_BBCodeParser. Nele se configura alguns parametros como caractere de abertura e fechamento das tags, aspas duplas ou simples para atributos (importante para XHTML) entre outras coisas. É nele também que definimos quais Filtros serão permitidos, por exemplo se eu quiser permitir somente negrito, italico, sublinhado, riscado, sub e sup eu uso "filters" => "Basic" , se eu quiser todas essas tags mais links eu uso "filters" => "Basic,Links" e assim por diante. No exemplo eu habilitei todos os filtros.

O segundo bloco de código é o formulário que submete o texto e o terceiro é inclusão do BBCodeParser.php (arquivo principal), instância da classe, método setter que configura o meu texto, análise do texto propriamente dito e por fim um echo() básico para mostrar o resultado (texto formatado). Bem simples de usar!

Obs: não coloquei aqui exemplo do filtro Extended mas é legal dar uma olhada pois dá para fazer coisas legais como [size=16]Grande![/size], [font=verdana]Font![/font], etc

Caso seja necessário o uso de uma tag HTML que não esteja disponível em nenhum desses seis filtros você pode criar seu próprio filtro seguindo as seguintes regras:

- O arquivo físico deve ser salvo no diretório de filtros HTML/BBCodeParser/Filter

- Sua classe deve se chamar HTML_BBCodeParser_Filter_MyFilter (onde MyFilter é o nome do filtro e o nome do arquivo físico)

- A classe HTML_BBCodeParser_Filter_MyFilter deve extender a classe HTML_BBCodeParser, que é a principal do pacote.

Segue um exemplo de um filtro adicional.

<?php
require_once("HTML/BBCodeParser.php");

class HTML_BBCodeParser_Filter_MyFilter extends HTML_BBCodeParser {
    var $_definedTags = array(
        'hunf' => array('htmlopen' => 'h1',
        'htmlclose'   => 'h1',
        'allowed'     => 'all',
        'attributes'  => array()
        )
    );
}
?>

Nesse exemplo eu criei a tag 'hunf' que quando chamada deixará o texto como header (título maior) que é representado pela tag 'h1' do HTML. Eu posso adicionar quantas tags eu quiser nesse mesmo arquivo ou criar um outro para outro filtro. Agora basta salvar esse arquivo como MyFilter.php no diretório HTML/BBCodeParser/Filter e configurá-lo no Array de configurações pre definidas que mencionei no início assim: "filters" => "Basic,Links,Email,Images,Lists,Extended,MyFilter"

Agora é só usar as tags assim: [hunf]Título[/hunf]. Esse foi apenas um exemplo e dá para fazer muito mais com qualquer tag conhecida do HTML.

dica: você pode integrar o seu formulário com JavaScript e adicionar botões (ícones) para ao invés de ter que digitar as tags na mão, o usuário poder selecionar o texto e clicar em um botão como o <a title=\"PHPbb\" href=\"http://www.phpbb.com\">PHPbb</a> faz. Assim você facilita a vida dos mais leigos em informática (tipo os caras do marketing etc :-)).

Como todo pacote PEAR, ainda existe muita coisa que pode ser dita, mas ai é só mexendo nos fontes e discutindo o assunto.

Espero ter dado uma boa introdução ao uso do pacote HTML_BBCodeParser e a outros pacotes PEAR também pois a lógica de uso é a mesma para todos.

Herbert Araujo
blog: www.php.locaweb.com.br

Comentários:

Mostrando 1 - 5 de 5 comentários
É realmente bem interessante; e pode ser bastante útil. O PEAR tem realmente muitos pacotes maneros...
16/02/2006 5:40am (~18 anos atrás)

muito loco
16/02/2006 4:58am (~18 anos atrás)

Diego Hellas disse:
Legal e funcional!

antes eu fazia isso com uma função que eu mesmo criei, vou tentar usar isso, mas parece funcionar bem, tembém pesquisei em outros lugares e tive boas recomendações.
15/02/2006 7:25am (~18 anos atrás)

gostei do seu tutorial
04/02/2006 5:11pm (~18 anos atrás)

massa
04/02/2006 5:11pm (~18 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)