BBCODE en PHP Clase BBParser 1.1.0

Iniciado por alexander1712, Octubre 06, 2013, 07:22:25 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Octubre 06, 2013, 07:22:25 PM Ultima modificación: Octubre 06, 2013, 07:24:14 PM por alexmanycol
Buenas tardes, dejaré el trabajo del día de hoy, tomando mi clase anterior para controlar bbcode No tienes permitido ver los links. Registrarse o Entrar a mi cuenta le hize un poco de refinamiento e implementé algunas mejoras, asique hoy traigo mi BBParser 1.1.0 con mejoras que mensionaré ahora mismo:


  • Agregado soporte para emoticonos
  • Implementada interfaces
  • Agregado el Property que diseñé No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
  • Agregado soporte toString para los objetos
  • Agregadas los final function

Voy a detallar las mejoras:
el soporte para emoticonos implementa una nueva clase de tipo smiley (así le llamé) y una función para crear emoticonos que se puedan usar por si no manejan objetos. (bbp_generate_bbcode_smiley();)

A partir de ahora para usar el BBParser tienen que incluir unicamente bbcode_interface.php
La interface les permitirá ver las funciones publicas que pueden utilizar y sus parametros sin tener que ver todo el código.
Si una interfaz se llama Ibbcode es la que se usa en la clase bbcode (por lo que sus funciones son las que están en los objetos instanciados de esa clase)
Si una interfaz dice Iejemplo extend Ibbcode por ejemplo, quiere decir que la interfaz Iejemplo tendrá todas las funciones de Ibbcode además de las que se describen en Iejemplo.

El property les permite acceder a los atributos privados de las clases, por ejemplo ver el id de un bbcode poniendo
Código: php
echo $objetobbcode->id;

donde objetobbcode es el objeto de una de las clases e id es un atributo privado.

El soporte tostring les permite dependiendo de la clase a la que pertenezca un objeto hacer:
$objeto = new bbcode();
echo $objeto;
y mostrará dependiendo de la clase algo de relevancia de la misma clase.

Internamente es útil el final function por si alguien realiza ediciones al modulo BBParser que no pueda realizar ciertos cambios sin que genere errores, lo que asegura el correcto funcionamiento del código aún cuando se quiera sobreescribir ciertas cosas que no se deberían sobreescribir.

Dejando las explicaciones de lado les dejo el código para descargar No tienes permitido ver los links. Registrarse o Entrar a mi cuenta.

el ejemplo de uso también está adjuntado pero es éste:

Código: php

<?php

// EXAMPLE OF USE

// incluimos el parseador
include('bbcode_interface.php');

// creamos la lista de los distintos bbc que usaremos
$lista = array();

$lista[] = bbp_generate_bbcode_simple('hr', '<hr>'); // [hr] -> <hr>
$lista[] = bbp_generate_bbcode_simple('br', '<br />'); // [br] -> <br />

$lista[] = bbp_generate_bbcode_double('b', '<b>', '</b>'); // [b]?[/b] -> <b>?</b>
$lista[] = bbp_generate_bbcode_double('s', '<s>', '</s>'); // [b]?[/b] -> <b>?</b>

$lista[] = bbp_generate_bbcode_smiley(':)', '<img src="http://png.findicons.com/files/icons/1577/danish_royalty_free/32/smiley.png">'); // emoticono :)

$lista[] = bbp_generate_bbcode_double_params('url', '<a href="?">', '</a>'); // [url=google.com]example[/url] -> <a href="google.com">example</a>

$example = '[br]Hola, soy [b]alexander[/b][br] esto es una prueba :) [s]FEOS![/s] [br][hr][br] [url=http://basecode.org]BaseCode[/url][br] Voy a probar ahora, que pasa si dejo una etiqueta abierta como [b]esta[br][br]';
$errors = null;

echo $lista[3]; // mostramos el bbcode [s] para probar que se puede hacer un echo directamente al objeto

// vemos el texto parseado
echo bbp_parse($lista, $example, $errors);

var_dump($errors);


y se ve así:



como verán en la imagen hay ciertas cosas que funcionan mejor en mi código que por ejemplo en SMF, ya que si en smf dejan una etiqueta abierta, como la de negrita, todo el texto desde donde empieza hasta donde termina el texto queda en negrita, en mi código si no tiene la etiqueta de cierre se muestra sin ser parseado, lo que evita que se vea feo xD.

saludos para todos! espero que les guste!