send
Grupo de Telegram
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

[CLASS] BBParser (clase para manejar bbcode)

  • 1 Respuestas
  • 783 Vistas

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

Desconectado alexander1712

  • *
  • Underc0der
  • Mensajes: 851
  • Actividad:
    0%
  • Reputación -2
    • Ver Perfil
    • El blog del programador
    • Email
« en: Octubre 05, 2013, 03:43:40 pm »
Buenas tardes, estaba trabajando en mi proyecto personal, y me surguió el problema de tener que trabajar mensajes con formato pero sin permitirle al usuario que pueda ingresar html, porque todos sabemos los problemas que implica eso, por lo que tomé la idea del BBCODE de smf, y diseñé una clase para manipular textos parseando el bbcode y transformarlo a html a la hora de ver el mensaje.

Para esto creé una clase modelo de lo que era un bbcode, luego creé otras tres clases que la extienden para diferenciar tres tipos de BBCODE el simple (una etiqueta sola, como el [hr]), luego el bbcode doble, (lo que sería por ejemplo [b][/b]), y luego una etiqueta doble con parámetros (lo que sería por ejemplo [url=algo.com]algo[/url]) teniendo estos tres tipos de objetos bbc, también creé una clase que parsee todos los objetos de un listado. por último para los que no tienen muy claro el funcionamiento de programación orientada a objetos, hize lo que podría llamarse una interfaz, con funciones simples que les permiten a los usuarios menos experimentados utilizar la clase sin utilizarla directamente sino en base a un conjunto de funciones, y para finalizar realizé un ejemplo de uso que prueba mi clase.

Quiero aclarar que mi clase está en fase prototipo, lo que quiere decir que puede contener errores, y no está pulida, es un inicio.

Sin más dejo el archivo bbcode_parser.php (la "librería" que tiene todo el parser)

Código: PHP
  1.  
  2. <?php
  3.  
  4. /** BBCODE PARSER CLASS
  5.  *  @ Project Name: BBParser Alias BBP
  6.  *  @ Author: Alexander171294 - [H]arkonnen
  7.  *  @ Date: 05/10/13
  8.  *  @ Contact: alexander171294@gmail.com
  9.  *  @ Status: Prototype
  10.  *  @ Comment-Lang: es-AR
  11.  *  @ PHP-Version: >=5.1
  12.  *  @ Class-Version: 1.0.0
  13.  */  
  14.  
  15. /* Ésta clase está orientada al tratamiento efectivo de bbcode
  16.    Para lo cual cuenta con varias clases, la principal para parsear los textos
  17.    y clases secundarias que corresponden a bbcode en específico
  18. */
  19.  
  20. /* Clase que define a un objeto BBCODE
  21.     Es una clase básicamente declaratoria
  22. */
  23.  
  24. abstract class bbcode
  25. {
  26.     /*
  27.         identificador del bbcode
  28.         @obj_id (string)
  29.     */
  30.     private $obj_id = null;
  31.     /*
  32.         su identidad en html
  33.         @obj_html (string)
  34.     */
  35.     private $obj_html = null;
  36.     /*
  37.         cantidad de coincidencias
  38.         @obj_html (int)
  39.     */
  40.     private $obj_cc = 0;
  41.     /*
  42.         delimitador inicial del bbcode (con que se inicia el bbcode)
  43.         @delimiter_initial (string)
  44.     */
  45.     private $delimiter_initial = '[';
  46.     /*
  47.         delimitador final del bbcode (con que se finaliza el bbcode)
  48.         @delimiter_final (string)
  49.     */
  50.     private $delimiter_final = ']';
  51.     /*
  52.         variable que contiene el estado de errores
  53.         @error (bool) false: sin errores; true: ocurrio un problema
  54.     */
  55.     private $error = false;
  56.     /*
  57.         variable que contiene el posible mensaje de error
  58.         @error_detail (string)
  59.     */
  60.     private $error_detail = null;
  61.    
  62.     /*
  63.         función constructora que asigna el id o clave del bbcode
  64.         @obj_id (string) identificador del bbcode
  65.         @obj_html (string) identidad en html
  66.         @delimiter_initial (char) OPTIONAL caracter inicial del bbcode
  67.         @delimiter_final (char) OPTIONAL caracter final del bbcode
  68.     */
  69.     public function __construct( $obj_id, $obj_html, $delimiter_initial = null, $delimiter_final = null)
  70.     {
  71.         $obj_id = (string) $obj_id; $obj_html = (string) $obj_html; $delimiter_initial = (string) $delimiter_initial; $delimiter_final = (string) $delimiter_final;
  72.         try
  73.         {
  74.             $obj_id = You are not allowed to view links. Register or Login($obj_id);
  75.             if(You are not allowed to view links. Register or Login($obj_id)<1 || You are not allowed to view links. Register or Login($obj_id)) throw new exception ('INVALID PARAM @OBJ_ID');
  76.             $this->obj_id = $obj_id;
  77.             $obj_html = You are not allowed to view links. Register or Login($obj_html);
  78.             if(You are not allowed to view links. Register or Login($obj_html)<1 || You are not allowed to view links. Register or Login($obj_html)) throw new exception ('INVALID PARAM @OBJ_HTML');
  79.             $this->obj_html = $obj_html;
  80.             $this->delimiter_initial = You are not allowed to view links. Register or Login($delimiter_initial) ? $this->delimiter_initial : $delimiter_initial;
  81.             $this->delimiter_final = You are not allowed to view links. Register or Login($delimiter_final) ? $this->delimiter_final : $delimiter_final;
  82.            
  83.         } catch (Exception $e)
  84.         {
  85.             $this->error_detail = $e->getMessage();
  86.             $this->error = true;
  87.         }
  88.     }
  89.    
  90.     ///////////////////////////////////////////////////////////
  91.     // Funciones Setters (para cambio luego del constructor) //
  92.     ///////////////////////////////////////////////////////////
  93.    
  94.     // steamos el nuevo id del objeto
  95.     public function set_obj_id($new_obj_id)
  96.     {
  97.         $new_obj_id = (string) $new_obj_id;
  98.         try
  99.         {
  100.             $obj_id = You are not allowed to view links. Register or Login($obj_id);
  101.             if(You are not allowed to view links. Register or Login($obj_id)<1 || You are not allowed to view links. Register or Login($obj_id)) throw new exception ('INVALID PARAM @OBJ_ID');
  102.             $this->obj_id = $new_obj_id;
  103.             return true;
  104.         } catch (Exception $e)
  105.         {
  106.             $this->error_detail = $e->getMessage();
  107.             $this->error = true;
  108.             return false;
  109.         }
  110.     }
  111.    
  112.     // seteamos el nuevo html para este bbcode
  113.     public function set_obj_html($new_obj_html)
  114.     {
  115.         $new_obj_html = (string) $new_obj_html;
  116.         try
  117.         {
  118.             $obj_html = You are not allowed to view links. Register or Login($obj_html);
  119.             if(You are not allowed to view links. Register or Login($obj_html)<1 || You are not allowed to view links. Register or Login($obj_html)) throw new exception ('INVALID PARAM @OBJ_HTML');
  120.             $this->obj_html = $new_obj_html;
  121.             return true;
  122.         } catch (Exception $e)
  123.         {
  124.             $this->error_detail = $e->getMessage();
  125.             $this->error = true;
  126.             return false;
  127.         }
  128.     }
  129.    
  130.     // seteamos los nuevos delimitadores para este bbcode
  131.     public function set_delimiters($delimiter_initial, $delimiter_final)
  132.     {
  133.         $delimiter_initial = (string) $delimiter_initial; $delimiter_final = (string) $delimiter_final;
  134.         try
  135.         {
  136.             $delimiter_initial = You are not allowed to view links. Register or Login($delimiter_initial);
  137.             if(You are not allowed to view links. Register or Login($delimiter_initial)<1 || You are not allowed to view links. Register or Login($delimiter_initial)) throw new exception ('INVALID PARAM @delimiter_initial');
  138.             $this->delimiter_initial = $delimiter_initial;
  139.             $delimiter_final = You are not allowed to view links. Register or Login($delimiter_final);
  140.             if(You are not allowed to view links. Register or Login($delimiter_final)<1 || You are not allowed to view links. Register or Login($delimiter_final)) throw new exception ('INVALID PARAM @delimiter_final');
  141.             $this->delimiter_final = $delimiter_final;
  142.             return true;
  143.         } catch (Exception $e)
  144.         {
  145.             $this->error_detail = $e->getMessage();
  146.             $this->error = true;
  147.             return false;
  148.         }
  149.     }
  150.    
  151.     ///////////////////////////////////////////////////////////
  152.     // Funciones Getters (para obtener atributos)            //
  153.     ///////////////////////////////////////////////////////////
  154.    
  155.     // obtener el id de este bbcode
  156.     public function get_obj_id()
  157.     {
  158.         return $this->obj_id;
  159.     }
  160.    
  161.     // obtener el html de este bbcode
  162.     public function get_obj_html()
  163.     {
  164.         return $this->obj_html;
  165.     }
  166.    
  167.     // obtener los delimitadores de este bbcode
  168.     public function get_delimiter_initial()
  169.     {
  170.         return $this->delimiter_initial;
  171.     }
  172.    
  173.     // obtener los delimitadores de este bbcode
  174.     public function get_delimiter_final()
  175.     {
  176.         return $this->delimiter_final;
  177.     }
  178.    
  179.     // obtener si hay error
  180.     public function get_error()
  181.     {
  182.         return $this->error;
  183.     }
  184.    
  185.     // obtener detalles del error
  186.     public function get_error_detail()
  187.     {
  188.         return $this->error_detail;
  189.     }
  190. }
  191.  
  192. class bbc_basic extends bbcode
  193. {
  194.     /*
  195.         función que parsea el texto para bbcodes básicos
  196.     */
  197.     public function parser($text)
  198.     {
  199.         $text = (string) $text;
  200.         $text = You are not allowed to view links. Register or Login($text);
  201.         if(!You are not allowed to view links. Register or Login($text))
  202.             return You are not allowed to view links. Register or Login(parent::get_delimiter_initial().parent::get_obj_id().parent::get_delimiter_final(),parent::get_obj_html(),$text);
  203.         else
  204.             return false;
  205.     }
  206. }
  207.  
  208. class bbcode_double extends bbcode
  209. {
  210.     /*
  211.         identificador de cierre de bbcode (dado por delimitador inicial + identificador de cierre + id + delimitador final)
  212.         @obj_close_id (string)
  213.     */
  214.     private $obj_close_id = '/';
  215.     /*
  216.         identificador de cierre de html (por ejemplo </a>)
  217.         @html_close (string)
  218.     */
  219.     private $html_close = null;
  220.    
  221.     /*
  222.         función que parsea el texto para bbcodes dobles
  223.     */
  224.     public function parser($text)
  225.     {
  226.         $text = (string) $text;
  227.         $text = You are not allowed to view links. Register or Login($text);
  228.         if(!You are not allowed to view links. Register or Login($text))
  229.         {
  230.             $key = parent::get_delimiter_initial().parent::get_obj_id().parent::get_delimiter_final().'?'.parent::get_delimiter_initial().$this->obj_close_id.parent::get_obj_id().parent::get_delimiter_final();
  231.             $item = parent::get_obj_html().'$1'.$this->html_close;
  232.             return You are not allowed to view links. Register or Login('#'.You are not allowed to view links. Register or Login(You are not allowed to view links. Register or Login('[',']'),You are not allowed to view links. Register or Login('\[','\]'),You are not allowed to view links. Register or Login('?','(.+)',$key)).'#i', $item, $text);
  233.         }
  234.         else
  235.         {
  236.             $this->error = true;
  237.             $this->error_detail = 'Class bbcode_double ERROR: function parser :: Param $text is invalid';
  238.             return false;
  239.         }
  240.     }
  241.    
  242.     ///////////////////////////////////////////////////////////
  243.     // Funciones Setters (para cambio luego del constructor) //
  244.     ///////////////////////////////////////////////////////////
  245.    
  246.     /*
  247.         función para setear el cierre del bbcode (por ejemplo /)
  248.     */
  249.     public function set_obj_close_id($id)
  250.     {
  251.         $id = (string) $id;
  252.         $id = You are not allowed to view links. Register or Login($id);
  253.         if(!You are not allowed to view links. Register or Login($id))
  254.         {
  255.             $this->obj_close_id = $id;
  256.             return true;
  257.         } else {
  258.             $this->error = true;
  259.             $this->error_detail = 'Class bbcode_double ERROR: function set_obj_close_id :: Param $id is invalid';
  260.             return false;
  261.         }
  262.     }
  263.    
  264.     /*
  265.         función para setear el cierre de html (por ejemplo </a>)
  266.     */
  267.     public function set_html_close($html)
  268.     {
  269.         $html = (string) $html;
  270.         $html = You are not allowed to view links. Register or Login($html);
  271.         if(!You are not allowed to view links. Register or Login($html))
  272.         {
  273.             $this->html_close = $html;
  274.             return true;
  275.         } else {
  276.             $this->error = true;
  277.             $this->error_detail = 'Class bbcode_double ERROR: function set_html_close :: Param $html is invalid';
  278.             return false;
  279.         }
  280.        
  281.     }
  282.    
  283.     ///////////////////////////////////////////////////////////
  284.     // Funciones Getters (para obtener atributos)            //
  285.     ///////////////////////////////////////////////////////////
  286.    
  287.     public function get_obj_close_id()
  288.     {
  289.         return $this->obj_close_id;
  290.     }
  291.    
  292.     public function get_html_close()
  293.     {
  294.         return $this->html_close;
  295.     }
  296. }
  297.  
  298. class bbcode_double_params extends bbcode
  299. {
  300.     /*
  301.         identificador de cierre de bbcode (dado por delimitador inicial + identificador de cierre + id + delimitador final)
  302.         @obj_close_id (string)
  303.     */
  304.     private $obj_close_id = '/';
  305.     /*
  306.         identificador de cierre de html (por ejemplo </a>)
  307.         @html_close (string)
  308.     */
  309.     private $html_close = null;
  310.    
  311.     /*
  312.         función que parsea el texto para bbcodes dobles con parametros
  313.     */
  314.     public function parser($text)
  315.     {
  316.         $text = (string) $text;
  317.         $text = You are not allowed to view links. Register or Login($text);
  318.         if(!You are not allowed to view links. Register or Login($text))
  319.         {
  320.             $key = parent::get_delimiter_initial().parent::get_obj_id().'=?'.parent::get_delimiter_final().'?'.parent::get_delimiter_initial().$this->obj_close_id.parent::get_obj_id().parent::get_delimiter_final();
  321.             $item = You are not allowed to view links. Register or Login('?','$1',parent::get_obj_html()).'$2'.$this->html_close;
  322.             return You are not allowed to view links. Register or Login('#'.You are not allowed to view links. Register or Login(You are not allowed to view links. Register or Login('[',']'),You are not allowed to view links. Register or Login('\[','\]'),You are not allowed to view links. Register or Login('?','(.+)',$key)).'#i', $item, $text);
  323.         }
  324.         else
  325.         {
  326.             $this->error = true;
  327.             $this->error_detail = 'Class bbcode_double_params ERROR: function parser :: Param $text is invalid';
  328.             return false;
  329.         }
  330.     }
  331.    
  332.         /*
  333.         función para setear el cierre de html (por ejemplo </a>)
  334.     */
  335.     public function set_html_close($html)
  336.     {
  337.         $html = (string) $html;
  338.         $html = You are not allowed to view links. Register or Login($html);
  339.         if(!You are not allowed to view links. Register or Login($html))
  340.         {
  341.             $this->html_close = $html;
  342.             return true;
  343.         } else {
  344.             $this->error = true;
  345.             $this->error_detail = 'Class bbcode_double ERROR: function set_html_close :: Param $html is invalid';
  346.             return false;
  347.         }
  348.        
  349.     }
  350.    
  351.     ///////////////////////////////////////////////////////////
  352.     // Funciones Getters (para obtener atributos)            //
  353.     ///////////////////////////////////////////////////////////
  354.    
  355.     public function get_obj_close_id()
  356.     {
  357.         return $this->obj_close_id;
  358.     }
  359.    
  360.     public function get_html_close()
  361.     {
  362.         return $this->html_close;
  363.     }
  364.  
  365. }
  366.  
  367. //////////////////////////////////////
  368. //         CLASE PARSEADORA         //
  369. //////////////////////////////////////
  370.  
  371. // clase que parsea los bbcode
  372. class BBParser
  373. {
  374.     // arreglo de errores
  375.     private $errors = You are not allowed to view links. Register or Login();
  376.     // cantidad de errores
  377.     private $errors_count = 0;
  378.     // cantidad de bbcode simples
  379.     private $simple_count = 0;
  380.     // cantidad de bbcode dobles
  381.     private $double_count = 0;
  382.     // cantidad de bbcode doble con parametros
  383.     private $double_params_count = 0;
  384.     // listado de bbcodes disponibles
  385.     private $bbcode = null;
  386.     // texto a parsear
  387.     private $text = null;
  388.    
  389.     // función constructora
  390.     public function __construct( $bbcode_list, $text )
  391.     {
  392.         $text = (string) $text;
  393.         try
  394.         {
  395.             if(!You are not allowed to view links. Register or Login($bbcode_list)) throw new exception ('Class bbcode_parser INSTANCE ERROR: the param $bbcode_list is invalid type');
  396.             if(You are not allowed to view links. Register or Login($bbcode_list)<1) throw new exception ('Class bbcode_parser INSTANCE ERROR: the param $bbcode_list is invalid array');
  397.             $text = You are not allowed to view links. Register or Login($text);
  398.             if(You are not allowed to view links. Register or Login($text)) throw new exception ('Class bbcode_parser INSTANCE ERROR: empty param $text');
  399.             $this->bbcode = $bbcode_list;
  400.             $this->text = $text;
  401.         } catch (Exception $e)
  402.         {
  403.             $this->errors[$this->errors_count] = $e->getMessage();
  404.             $this->errors_count++;
  405.         }
  406.     }
  407.    
  408.     // función para parsear
  409.     public function parser()
  410.     {
  411.         if(You are not allowed to view links. Register or Login($this->bbcode))
  412.         {
  413.             $this->errors[$this->errors_count] = 'Class bbcode_parser Function parser(); NOT VALID BBCODE_LIST';
  414.             $this->errors_count++;
  415.             return false;
  416.         }
  417.         for($i = 0; $i<You are not allowed to view links. Register or Login($this->bbcode); $i++)
  418.         {
  419.             if($this->bbcode[$i] instanceof bbc_basic)
  420.                 $this->text = $this->parser_bbc_basic($this->bbcode[$i]);
  421.             elseif($this->bbcode[$i] instanceof bbcode_double)
  422.                 $this->text = $this->parser_bbc_double($this->bbcode[$i]);
  423.             elseif($this->bbcode[$i] instanceof bbcode_double_params)
  424.                 $this->text = $this->parser_bbc_double_params($this->bbcode[$i]);
  425.             else
  426.             {
  427.                 $this->errors[$this->errors_count] = 'Class bbcode_parser Function parser(); The item #' . $i . ' of array $bbcode_list is not a bbc valid class';
  428.                 $this->errors_count++;
  429.             }
  430.         }
  431.         return true;
  432.     }
  433.    
  434.     // parse bbcode_basic
  435.     private function parser_bbc_basic( bbc_basic $bbc )
  436.     {
  437.         $bbc = (object) $bbc;
  438.         $this->simple_count++;
  439.         if($result = $bbc->parser($this->text))
  440.             return $result;
  441.         else
  442.         {
  443.             $this->errors[$this->errors_count] =  $bbc->get_error_detail();
  444.             $this->errors_count++;
  445.             return false;
  446.         }
  447.     }
  448.    
  449.     // parse bbcode_double
  450.     private function parser_bbc_double( bbcode_double $bbc )
  451.     {
  452.         $bbc = (object) $bbc;
  453.         $this->double_count++;
  454.         if($result = $bbc->parser($this->text))
  455.             return $result;
  456.         else
  457.         {
  458.             $this->errors[$this->errors_count] =  $bbc->get_error_detail();
  459.             $this->errors_count++;
  460.             return false;
  461.         }
  462.     }
  463.    
  464.     // parse bbcode_double_params
  465.     private function parser_bbc_double_params( bbcode_double_params $bbc )
  466.     {
  467.         $bbc = (object) $bbc;
  468.         $this->double_params_count++;
  469.         if($result = $bbc->parser($this->text))
  470.             return $result;
  471.         else
  472.         {
  473.             $this->errors[$this->errors_count] =  $bbc->get_error_detail();
  474.             $this->errors_count++;
  475.             return false;
  476.         }
  477.     }
  478.    
  479.     // GETTERS
  480.     public function get_errors()
  481.     {
  482.         return $this->errors;
  483.     }
  484.     public function get_errors_count()
  485.     {
  486.         return $this->errors_count;
  487.     }
  488.     public function get_simple_count()
  489.     {
  490.         return $this->simple_count;
  491.     }
  492.     public function get_double_count()
  493.     {
  494.         return $this->double_count;
  495.     }
  496.     public function get_double_params_count()
  497.     {
  498.         return $this->double_params_count;
  499.     }
  500.     public function get_text()
  501.     {
  502.         return $this->text;
  503.     }
  504. }
  505.  
  506. //*********************************//
  507. //*          INTERFACE            *//
  508. //*********************************//
  509.  
  510. // crear objeto bbcode simple
  511. function bbp_generate_bbcode_simple($obj_id, $obj_html, $delimiter_initial = null, $delimiter_final = null)
  512. {
  513.     if(You are not allowed to view links. Register or Login($delimiter_initial))
  514.     {
  515.         $obj_id = (string)$obj_id;
  516.         $obj_html = (string)$obj_html;
  517.         //die(gettype($obj_id));
  518.         return new bbc_basic($obj_id, $obj_html);
  519.     } else {
  520.         return new bbc_basic((string)$obj_id, (string)$obj_html, (string)$delimiter_initial, (string)$delimiter_final);
  521.     }
  522. }
  523.  
  524. // crear objeto bbcode doble
  525. function bbp_generate_bbcode_double($obj_id, $obj_html, $html_close, $delimiter_initial = null, $delimiter_final = null)
  526. {
  527.     if(You are not allowed to view links. Register or Login($delimiter_initial))
  528.     {
  529.         $bbc = new bbcode_double((string)$obj_id, (string)$obj_html);
  530.         $bbc->set_html_close((string) $html_close);
  531.         return $bbc;
  532.     } else {
  533.         $bbc = new bbcode_double((string)$obj_id, (string)$obj_html, (string)$delimiter_initial, (string)$delimiter_final);
  534.         $bbc->set_html_close((string) $html_close);
  535.         return $bbc;
  536.     }
  537. }
  538.  
  539. // crear objeto bbcode doble con parametros
  540. function bbp_generate_bbcode_double_params($obj_id, $obj_html, $html_close, $delimiter_initial = null, $delimiter_final = null)
  541. {
  542.     if(You are not allowed to view links. Register or Login($delimiter_initial))
  543.     {
  544.         $bbc = new bbcode_double_params((string)$obj_id, (string)$obj_html);
  545.         $bbc->set_html_close((string) $html_close);
  546.         return $bbc;
  547.     } else {
  548.         $bbc = new bbcode_double_params((string)$obj_id, (string)$obj_html, (string)$delimiter_initial, (string)$delimiter_final);
  549.         $bbc->set_html_close((string) $html_close);
  550.         return $bbc;
  551.     }
  552. }
  553.  
  554. // parsear un texto usando una lista de codigos bbc
  555. function bbp_parse($list_bbcode, $text_parse, &$error_array)
  556. {
  557.     $bbp = new BBParser( (You are not allowed to view links. Register or Login) $list_bbcode, (string) $text_parse );
  558.     $error_array = $bbp->get_errors();
  559.     $bbp->parser();
  560.     return $bbp->get_text();
  561. }
  562.  
  563.  

y para mostrarles el funcionamiento les dejo un script de ejemplo:

Código: PHP
  1.  
  2. <?php
  3.  
  4. // EXAMPLE OF USE
  5.  
  6. // incluimos el parseador
  7. include('bbcode_parser.php');
  8.  
  9. // creamos la lista de los distintos bbc que usaremos
  10. $lista = You are not allowed to view links. Register or Login();
  11.  
  12. $lista[] = bbp_generate_bbcode_simple('hr', '<hr>'); // [hr] -> <hr>
  13. $lista[] = bbp_generate_bbcode_simple('br', '<br />'); // [br] -> <br />
  14.  
  15. $lista[] = bbp_generate_bbcode_double('b', '<b>', '</b>'); // [b]?[/b] -> <b>?</b>
  16. $lista[] = bbp_generate_bbcode_double('s', '<s>', '</s>'); // [b]?[/b] -> <b>?</b>
  17.  
  18. $lista[] = bbp_generate_bbcode_double_params('url', '<a href="?">', '</a>'); // [url=google.com]example[/url] -> <a href="google.com">example</a>
  19.  
  20. $example = 'Hola, soy [b]alexander[/b][br] esto es una prueba :) [s]FEOS[/s] [br][hr][br] [url=http://basecode.org]BaseCode[/url][br] ';
  21. $errors = null;
  22.  
  23. // vemos el texto parseado
  24. echo bbp_parse($lista, $example, $errors);
  25.  
  26. // lista de errores
  27. You are not allowed to view links. Register or Login($errors);
  28.  
  29.  

esto se vería así:



bueno como verán el funcionamiento es sencillo, se crea la lista de bbcodes disponibles (hasta podríamos hacer un archivo a parte que los cree) y luego parseamos un texto de ejemplo de una variable de ejemplo.

el bbcode_simple también podría ser usado para emoticonos, ya que la clase es bastante manipulable (no tanto así el conjunto de funciones) se puede hasta cambiar los delimitadores del bbc, y de pronto en vez de poner [b] poner {b} o -b* por poner un ejemplo, o quitarle los delimitadores.

pueden descargar mi ejemplo clase You are not allowed to view links. Register or Login

un saludo para todos!
« Última modificación: Marzo 27, 2014, 05:26:05 pm por Expermicid »

Desconectado Réplica1

  • *
  • Underc0der
  • Mensajes: 35
  • Actividad:
    0%
  • Reputación 0
  • ... está historia se acabó.
    • Ver Perfil
    • @Pekador - Twitter
« Respuesta #1 en: Octubre 05, 2013, 04:33:30 pm »
Muy bueno alex, muy util! se agradece

Salu2;)

 

¿Te gustó el post? COMPARTILO!



10 Mejores Librerías Para Seguridad En PHP - Seguridad De Datos Desde PHP

Iniciado por graphixx

Respuestas: 0
Vistas: 1583
Último mensaje Enero 23, 2016, 06:03:10 am
por graphixx
[APORTE] edPDF - "Libreria" para edicion y creacion de PDFs

Iniciado por kid_goth

Respuestas: 4
Vistas: 880
Último mensaje Marzo 10, 2014, 07:15:31 pm
por kid_goth
Script para convertir planos cartograficos de OPENJUMP a AMCHARTS SVG JSON

Iniciado por graphixx

Respuestas: 0
Vistas: 1278
Último mensaje Septiembre 21, 2015, 11:18:27 pm
por graphixx
[Tutorial] Utilizar el método GET para simplificar páginas [Xt3mP]

Iniciado por Xt3mP

Respuestas: 0
Vistas: 1120
Último mensaje Marzo 19, 2010, 01:15:53 am
por Xt3mP
Script php para generar thumbnails (console line)

Iniciado por kid_goth

Respuestas: 0
Vistas: 842
Último mensaje Abril 13, 2013, 10:31:46 pm
por kid_goth