+1

PEAR: Usando o pacote HTML_BBCodeParser

criado por Herbert Araujo em 27/01/2006 7:19am
Se você possui um fórum, um blog, ou qualquer outro sistema que permita a inclusão de conteúdo por parte do usuário/visitante, seria muito interessante se sua aplicação permitisse o uso de tags HTML. Segurança, usuários leigos que não conhecem HTML, saber quais tags permitir e quais bloquear, etc, esses são alguns problemas que você pode encontrar e que o pacote HTML_BBCodeParser da PEAR te ajuda a resolver.

Com o pacote HTML_BBCodeParser da PEAR o usuário pode formatar o seu texto usando tags como por exempo [b]texto em negrito[/b], [url]http://www.link.com.br[/url], etc. Além de ter várias tags disponíveis você ainda pode criar suas próprias tags facilmente!

Para implementar essa funcionalidade em sua aplicação é necessário saber trabalhar com classes e conhecer um pouquinho da PEAR, porém isso não é difícil. Primeiro baixe o pacote <a title=\"PEAR HTML_BBCodeParser\" href=\"http://pear.php.net/package/HTML_BBCodeParser\">HTML_BBCodeParser</a> ou faça a instalação completa da PEAR seguindo o <a title=\"PEAR Installation\" href=\"http://pear.php.net/manual/en/installation.php\">manual oficial</a>. Eu particularmente não gosto dessa instalação então eu tenho um diretório pear/ configurado no include_path e vou baixando os pacotes individualmente conforme vou precisando.

Depois da PEAR configurada...

Por default existem seis arquivos .php no pacote, cada qual representando um filtro, ou conjunto de tags (ou uma única tag), são eles: Basic.php, Email.php, Extended.php, Images.php, Links.php e Lists.php

Essa divisão lhe da autonomia para escolher quais tags habilitar e criar tags customizadas caso precise.

O filtro básico por exemplo, representado pelo arquivo Basic.php, permite o uso das seguintes tags:
[b]texto em negrito[/b]
[i]texto em itálico[/i]
[u]texto sublinhado[/u]
[s]texto riscado[/s]
[sub]base[/sub]
[sup]expoente[/sup]

O filtro Email.php permite [email]email@email.com.br[/email] ou [email=email@email.com.br]Mail me[/email].

O Images.php permite [img]php.gif[/img] ou [img w=50 h=50]php.gif[/img], sendo que w é largura (width) e h é altura (height).

Já o Links.php permite [url]http://php.locaweb.com.br[/url] ou [url=http://php.locaweb.com.br]Site![url].

Por fim existe o filtro List para listas ordenadas e o filtro Extended para as tags font, color, code, size, align e quote. Não encontrei documentação no site da PEAR para esse pacote então é necessário dar um lida nos fontes para ver como funciona (as classes são bem curtinhas :-) )

Agora vendo funcionar. Salve o exemplo abaixo e execute no browser. Depois do código os comentários.

<?php
$options = array(
    "quotestyle" => double,
    "quotewhat"  => all,
    "open"       => "[",
    "close"      => "]",
    "xmlclose"   => true,
    "filters"    => "Basic,Links,Email,Images,Lists,Extended"
);
?>

<form action="<?=$PHP_SELF?>" method="post" name="form1">
    <textarea name="str"><?=$_POST["str"]?></textarea><br />
    <input type="submit" value="ok!" />
</form>

<?php
if (isset($_POST["str"])) {
    require_once("HTML/BBCodeParser.php");
    $parser = new HTML_BBCodeParser($options);
    $parser->setText($_POST["str"]);
    $parser->parse();
    echo($parser->getParsed());
}
?>

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 (~10 anos atrás)

muito loco
16/02/2006 4:58am (~10 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 (~10 anos atrás)

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

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

Novo Comentário:

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