Implementar códigos BBCode en PHP con PEAR

  • Por
Cómo implementar códigos BB Code en tus aplicaciones web con PHP, para que tus usuarios puedan editar el estilo de los comentarios en post, foros, etc.
Los códigos BBCode permiten a los usuarios crear un formato especial para textos que envían a foros o comentarios de post o páginas web. Son parecidos a etiquetas, con la particularidad que se escriben entre corchetes y permiten a los webmasters mantener un mayor control sobre el formato de las páginas, al ser posible restringir qué códigos BB se pueden utilizar, cuáles no y qué traducciones se deben utilizar para cada BBCode.

Si estás leyendo este texto posiblemente ya no necesites más explicaciones sobre lo que son los BBCode y quieras ver directamente cómo implementarlos en tus scripts PHP. No obstante, indicamos que en DesarrolloWeb.com hemos publicado una explicación detallada de los BBCode y tipos de formato que soportan.

En este artículo pretendemos explicar cómo implementar el soporte a BBCode en una página web, de una manera sencilla y muy depurada, a través de PEAR, un framework PHP muy conocido y ampliamente utilizado.

Nota: Estamos publicando un manual para aprender a instalar PEAR.

PEAR dispone una clase que sirve para implementar los BBCode en PHP sin apenas esfuerzo, ya que provee todo lo que necesitamos para procesar textos que tengan esta notación y convertirlos a HTML entendible por navegadores. La clase que nos estamos refiriendo está en el paquete HTML_BBCodeParser y su documentación se puede acceder en la URL: http://pear.php.net/package/HTML_BBCodeParser

Nota: Habría que comentar que para utilizar PEAR es necesario tener instalado el framework en nuestro sistema e instalarlo no significa simplemente subir unos archivos por FTP al servidor, sino que hay que realizar algunas acciones que no vamos a explicar en este artículo. Sin embargo, puedes descargar por separado el paquete principal de PEAR y el paquete HTML_BBCodeParser y subirlos por FTP a tu servidor. Luego, con algunos pequeños cambios en los includes, para que se pueda acceder a los códigos según las rutas donde has colocado los directorios de los paquetes, podrías utilizar el paquete HTML_BBCodeParser sin problemas. Esto, hay que decirlo, es una gran chapuza, pero nosotros lo hemos hecho con éxito en un sitio web.
Para aclararnos, una vez instalado PEAR y el paquete HTML_BBCodeParser, tanto si lo hemos hecho con el instalador de PEAR como si lo hemos hecho "a mano", deberíamos tener una estructura de directorios como la siguiente:


Código PHP para implementar los BBCode

El primer paso sería incluir la librería o paquete para trabajar con BBCode de PEAR:

include ("PEAR/HTML/BBCodeParser.php");

El segundo paso sería instanciar un objeto de la clase que viene con el paquete HTML_BBCodeParser, que se llama con el mismo nombre del paquete:

$analizador_bbcode = new HTML_BBCodeParser();

Ahora tenemos un analizador o traductor de BBCode listo para funcionar.

Lo que necesitamos ahora es una variable con el texto a analizar y a traducir los BBCodes, por ejemplo podría ser lo siguiente:

$texto = "[b]negrita[/b] [i]cursiva[/i]";

Ahora tenemos que cargar ese texto y analizarlo, a través de distintos métodos del objeto de clase HTML_BBCodeParser, que habíamos instanciado antes:

$analizador_bbcode->setText($texto);
$analizador_bbcode->parse();


Por último, podemos utilizar otro método del objeto de clase HTML_BBCodeParser para extraer el texto analizado, donde los BBCodes han sido traducidos por sus correspondientes etiquetas HTML.

$texto_traducido = $analizador_bbcode->getParsed();

El código PHP completo se puede ver a continuación:

include ("PEAR/HTML/BBCodeParser.php");
$analizador_bbcode = new HTML_BBCodeParser();
$texto = "[b]negrita[/b] [i]cursiva[/i]";
$analizador_bbcode->setText($texto);
$analizador_bbcode->parse();
$texto_traducido = $analizador_bbcode->getParsed();


En el siguiente artículo de BBCodes con PEAR que vamos a publicar en desarrolloweb.com veremos la manera de mejorar un poco este código y tratar de personalizar un poco los tipos de códigos BB soportados.

Sólo un único detalle antes de acabar. Se trata de explicar un método que puede simplificar un poco este código: método qparse():

El código anterior podríamos reducirlo un poco con el método qparse (quick parse), que recibe directamente el texto a analizar y devuelve el texto con los BB Codes traducidos. Quedaría como sigue:

include ("PEAR/HTML/BBCodeParser.php");
$analizador_bbcode = new HTML_BBCodeParser();
$texto = "[b]negrita[/b] [i]cursiva[/i]";
$texto_traducido = $analizador_bbcode->qParse($texto);