Foros del Web » Programando para Internet » PHP »

Aporte: Function: bbcode a html

Estas en el tema de Aporte: Function: bbcode a html en el foro de PHP en Foros del Web. Una función que ojala le sirva a mas de 1 .. no se si estaba pero la hice recién y pensé en compartirla... si pueden ...

  #1 (permalink)  
Antiguo 17/11/2009, 14:32
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 15 años, 1 mes
Puntos: 334
De acuerdo Aporte: Function: bbcode a html

Una función que ojala le sirva a mas de 1 .. no se si estaba pero la hice recién y pensé en compartirla... si pueden mejorarla de ahí y volver a postearla seria bueno para que fuera mas profesional .. :B

saludos!



Código php:
Ver original
  1. class StringFunctions {
  2.     /**
  3.      * bbcode2html() Estandard bbcode transform [http://www.bbcode.org/reference.php]
  4.      *
  5.      * @access  public
  6.      * @param   $cadena string BBCODE
  7.      * @return  $cadena string HTML
  8.      */
  9.     public function bbcode2html($cadena) {
  10.         // Style's to box code, spoiler, etc.
  11.         define ( 'TITLE_DATA', ' style="font-size:11px;color:#666;"' );
  12.         define ( 'BOX_STYLE', ' style="border:1px solid #ccc;background:#f1f1f1;padding:5px;margin:2px;"' );
  13.        
  14.         // Array bbcode & html PRCE
  15.         $bbcode [] = '/\[b\](.*)\[\/b\]/is';
  16.         $html [] = '<b>$1</b>';
  17.        
  18.         $bbcode [] = '/\[u\](.*)\[\/u\]/is';
  19.         $html [] = '<u>$1</u>';
  20.        
  21.         $bbcode [] = '/\[i\](.*)\[\/i\]/is';
  22.         $html [] = '<i>$1</i>';
  23.        
  24.         $bbcode [] = '/\[s\](.*)\[\/s\]/is';
  25.         $html [] = '<s>$1</s>';
  26.        
  27.         $bbcode [] = '/\[br\]/iU';
  28.         $html [] = '<br />';
  29.        
  30.         $bbcode [] = '/\[font=(?:"|\')?([\w\s-]*)(?:"|\')?\](.*)\[\/font\]/is';
  31.         $html [] = '<span style="font-family:$1;">$2</span>';
  32.        
  33.         $bbcode [] = '/\[size=(?:"|\')?([\w\s-]*)(?:"|\')?\](.*)\[\/size\]/is';
  34.         $html [] = '<span style="font-size:$1px;">$2</span>';
  35.        
  36.         $bbcode [] = '/\[url\](.*)\[\/url\]/i';
  37.         $html [] = '<a href="$1">$1</a>';
  38.        
  39.         $bbcode [] = '/\[url=(?:"|\')?(.*)(?:"|\')?\](.*)\[\/url\]/i';
  40.         $html [] = '<a href="$1">$2</a>';
  41.        
  42.         $bbcode [] = '/\[quote\]/i';
  43.         $html [] = '<div' . TITLE_DATA . '>Cita:</div><blockquote' . BOX_STYLE . '>';
  44.        
  45.         $bbcode [] = '/\[quote=(?:"|\')?([\w\s-]*)(?:"|\')?\]/is';
  46.         $html [] = '<div' . TITLE_DATA . '><b>$1</b> escribi&oacute;:</div><blockquote' . BOX_STYLE . '>';
  47.        
  48.         $bbcode [] = '/\[\/quote\]/i';
  49.         $html [] = '</blockquote>';
  50.        
  51.         $bbcode [] = '/\[color=(?:"|\')?(.*)(?:"|\')?\](.*)\[\/color\]/i';
  52.         $html [] = '<font color="$1">$2</font>';
  53.        
  54.         $bbcode [] = '/\[img\](.*)\[\/img\]/i';
  55.         $html [] = '<img src="$1" />';
  56.        
  57.         $bbcode [] = '/\[email\](.*)\[\/email\]/i';
  58.         $html [] = '<a href="mailto:$1">$1</a>';
  59.        
  60.         $bbcode [] = '/\[email=(?:"|\')?(.*)(?:"|\')?\](.*)\[\/email\]/i';
  61.         $html [] = '<a href="mailto:$1">$2</a>';
  62.        
  63.         $bbcode [] = '/\[list\](.*)\[\/list\]/is';
  64.         $html [] = '<ul>$1</ul>';
  65.        
  66.         $bbcode [] = '/\[list=1\](.*)\[\/list\]/is';
  67.         $html [] = '<ol style="list-style-type:decimal">$1</ol>';
  68.        
  69.         $bbcode [] = '/\[list=a\](.*)\[\/list\]/is';
  70.         $html [] = '<ol style="list-style-type:lower-alpha">$1</ol>';
  71.        
  72.         $bbcode [] = '/\[\*\](.*)/iU';
  73.         $html [] = '<li>$1 ';
  74.        
  75.         $bbcode [] = '/\[code\](.*)\[\/code\]/ise';
  76.         $html [] = "'<div'.TITLE_DATA.'>Codigo:</div><div'.BOX_STYLE.'>'.highlight_string(trim(stripslashes('$1')),true).'</div>'";
  77.        
  78.         $bbcode [] = '/\[align=(?:"|\')?(left|center|right){1}(?:"|\')?\](.*)\[\/align\]/is';
  79.         $html [] = '<div style="text-align:$1;">$2</div>';
  80.  
  81.         $cadena = preg_replace ( $bbcode, $html, $cadena );
  82.         return $cadena;
  83.     }
  84. }
__________________
More about me...
~ @rhyudek1
~ Github

Última edición por Hidek1; 22/02/2010 a las 14:56 Razón: Actualizada
  #2 (permalink)  
Antiguo 17/11/2009, 14:52
Avatar de almagropaco_  
Fecha de Ingreso: marzo-2008
Ubicación: Mar del Plata
Mensajes: 854
Antigüedad: 16 años, 7 meses
Puntos: 25
Respuesta: Aporte: Function: bbcode a html

Me podrias decir bien como se usaria? Tengo algo de idea, pero no estoy seguro, si yo pongo en un textarea texto
en una otra pagina lo recojo con $texto=bbcode2html($_POST[texto]);
Y finalmente eso terminaria asi <b>texto</b>
O me equivoco, no se bien el funcionamiento.
  #3 (permalink)  
Antiguo 17/11/2009, 14:54
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 15 años, 1 mes
Puntos: 334
Respuesta: Aporte: Function: bbcode a html

exactamente eso que dijiste.. todo lo que pase con bb code queda en html
__________________
More about me...
~ @rhyudek1
~ Github
  #4 (permalink)  
Antiguo 17/11/2009, 14:58
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 15 años, 1 mes
Puntos: 334
Respuesta: Aporte: Function: bbcode a html

Código html:
Ver original
  1. [b]Hello[/b]
  2. [u]Hello[/u]
  3. [i]Hello[/i]
  4. [s]Hello[/s]
  5. [br]
  6. [color=red]Hello[/color]
  7. [color=#FF0000]Hello[/color]
  8. [size=9]Hello[/size]
  9. [font=Verdana]Hello[/font]
  10. [align=left]left aligned text[/align]
  11. [align=center]centered text[/align]
  12. [center]centered text[/center]
  13. [align=right]right aligned text[/align]
  14. [quote]Hello[/quote]
  15. [quote="Name"]Hello[/quote]
  16. [quote=Name]Hello[/quote]
  17. [code]Hello[/code][list][*]Red[*]Blue[*]Yellow[/list][list=1][*]Red[*]Blue[*]Yellow[/list][list=a][*]Red[*]Blue[*]Yellow[/list][url]http://www.example.com/[/url]
  18. [url=http://www.example.com/]Example[/url]
  19. [email][email protected][/email]
  20. [[email protected]]email me[/email]

funciona con esos bbcode por el momento :B
__________________
More about me...
~ @rhyudek1
~ Github
  #5 (permalink)  
Antiguo 17/11/2009, 15:48
 
Fecha de Ingreso: noviembre-2009
Mensajes: 4
Antigüedad: 15 años
Puntos: 0
Respuesta: Aporte: Function: bbcode a html

mm interesante, lo voy a probar...
  #6 (permalink)  
Antiguo 17/11/2009, 17:31
Avatar de almagropaco_  
Fecha de Ingreso: marzo-2008
Ubicación: Mar del Plata
Mensajes: 854
Antigüedad: 16 años, 7 meses
Puntos: 25
Respuesta: Aporte: Function: bbcode a html

Esta muy bueno..
  #7 (permalink)  
Antiguo 18/11/2009, 06:06
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 15 años, 1 mes
Puntos: 334
Respuesta: Aporte: Function: bbcode a html

le añadi algunas cosas.. esta en el primer post
__________________
More about me...
~ @rhyudek1
~ Github

Última edición por Hidek1; 22/02/2010 a las 14:59
  #8 (permalink)  
Antiguo 18/11/2009, 10:41
Avatar de almagropaco_  
Fecha de Ingreso: marzo-2008
Ubicación: Mar del Plata
Mensajes: 854
Antigüedad: 16 años, 7 meses
Puntos: 25
Respuesta: Aporte: Function: bbcode a html

Esta muy bueno, podrias pedirle a algun moderador que lo agrege a la lista de aportes.
Muchos diran que no es mas que un preg_replace, pero lleva trabajo hacerlo, y hay que felicitarte por hacerlo.
  #9 (permalink)  
Antiguo 18/11/2009, 10:45
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 15 años, 1 mes
Puntos: 334
Respuesta: Aporte: Function: bbcode a html

:O gracias.. si me demore un buen rato peleando para que funcionara bien .. mientras le sirva a alguien ta biem :P
__________________
More about me...
~ @rhyudek1
~ Github
  #10 (permalink)  
Antiguo 21/11/2009, 10:32
Avatar de almagropaco_  
Fecha de Ingreso: marzo-2008
Ubicación: Mar del Plata
Mensajes: 854
Antigüedad: 16 años, 7 meses
Puntos: 25
Respuesta: Aporte: Function: bbcode a html

Mira, hoy me puse a usarla tu funcion, y note que usas [br]

Cita:
$bbcode[] = '/\[br\]/iU'; $html[] = '<br />';
Una forma mucho mas facil es con nl2br
Cita:
$texto=bbcode2html($_POST[texto]);
echo nl2br($texto);
Reemplaza los saltos de linea por br. Mucho mas simple
  #11 (permalink)  
Antiguo 21/11/2009, 10:46
Avatar de acoevil  
Fecha de Ingreso: julio-2008
Ubicación: localhost/colombia/sevillaValle.php
Mensajes: 1.123
Antigüedad: 16 años, 3 meses
Puntos: 32
Respuesta: Aporte: Function: bbcode a html

Gracias
__________________
Como presentar nuestros datos por medio de tablas . clase Aco_DataGrid Version 1.4
  #12 (permalink)  
Antiguo 24/11/2009, 11:01
Avatar de almagropaco_  
Fecha de Ingreso: marzo-2008
Ubicación: Mar del Plata
Mensajes: 854
Antigüedad: 16 años, 7 meses
Puntos: 25
Respuesta: Aporte: Function: bbcode a html

Como puedo hacer para que no se agrege \ antes de las comillas?
Me sale esto: \"caqu\" \'kq\'
y quiero esto: "caqu" 'kq'
  #13 (permalink)  
Antiguo 24/11/2009, 11:06
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 15 años, 1 mes
Puntos: 334
Respuesta: Aporte: Function: bbcode a html

cual es el texto que introduces?
__________________
More about me...
~ @rhyudek1
~ Github
  #14 (permalink)  
Antiguo 24/11/2009, 11:16
Avatar de almagropaco_  
Fecha de Ingreso: marzo-2008
Ubicación: Mar del Plata
Mensajes: 854
Antigüedad: 16 años, 7 meses
Puntos: 25
Respuesta: Aporte: Function: bbcode a html

Cita:
Iniciado por almagropaco_ Ver Mensaje
[...]
Me sale esto: \"caqu\" \'kq\'
y quiero esto: "caqu" 'kq'
No quiero que se le agrege la barra \ antes de las comillas, tanto simples como dobles.
  #15 (permalink)  
Antiguo 24/11/2009, 11:18
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 15 años, 1 mes
Puntos: 334
Respuesta: Aporte: Function: bbcode a html

es que yo estoy probando ahora el codigo y no me sale ningun problema de comillas por eso te pregunto cual fue el texto que pusiste en el cual te dio ese problema para revisar!
__________________
More about me...
~ @rhyudek1
~ Github
  #16 (permalink)  
Antiguo 24/11/2009, 11:22
Avatar de almagropaco_  
Fecha de Ingreso: marzo-2008
Ubicación: Mar del Plata
Mensajes: 854
Antigüedad: 16 años, 7 meses
Puntos: 25
Respuesta: Aporte: Function: bbcode a html

Con solo poner " ya sale \"
Mira, sin intencion de hacer spam, porque mi web no la uso, es para probar, aqui esta el textarea, http://testmix.netau.net/editor/demo.htm , tu diras, sera el editor que usas, no lo es, mande desde un textarea simple, desde otra pagina, mande el formulario a 2.php que es el que actua y pasa lo mismo.
  #17 (permalink)  
Antiguo 24/11/2009, 11:26
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 15 años, 1 mes
Puntos: 334
Respuesta: Aporte: Function: bbcode a html

pone eso debajo del codigo y te fijaras que no devuelve con problemas de comillas

Código php:
Ver original
  1. $cadena = 'texto con [b]"comillas"[/b]';
  2. echo bbcode2html($cadena);
__________________
More about me...
~ @rhyudek1
~ Github
  #18 (permalink)  
Antiguo 24/11/2009, 11:32
Avatar de almagropaco_  
Fecha de Ingreso: marzo-2008
Ubicación: Mar del Plata
Mensajes: 854
Antigüedad: 16 años, 7 meses
Puntos: 25
Respuesta: Aporte: Function: bbcode a html

Tenes razon, pero proba mandandolo desde el formulario de la pagina que te mande vas a ver que si. Es muy raro.
  #19 (permalink)  
Antiguo 24/11/2009, 11:33
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 15 años, 1 mes
Puntos: 334
Respuesta: Aporte: Function: bbcode a html

si pegas el codigo de la parte en donde capturas los datos del textarea y luego los imprimes en pantalla puedo revisar en que parte esta el error...
__________________
More about me...
~ @rhyudek1
~ Github
  #20 (permalink)  
Antiguo 24/11/2009, 11:37
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 6 meses
Puntos: 839
Respuesta: Aporte: Function: bbcode a html

Probablemente es porque la directiva magic_quotes_gpc está activa.
Véase: http://www.php.net/manual/en/securit...uotes.what.php
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #21 (permalink)  
Antiguo 24/11/2009, 11:38
Avatar de almagropaco_  
Fecha de Ingreso: marzo-2008
Ubicación: Mar del Plata
Mensajes: 854
Antigüedad: 16 años, 7 meses
Puntos: 25
Respuesta: Aporte: Function: bbcode a html

Mira, prueba desde aca si no http://testmix.netau.net/editor/prueba.htm nada de codigo, formulario, textarea (name="comentarios") y el submit, nada mas.

En 2.php muestro los datos asi:
Código php:
Ver original
  1. $texto = str_replace("<","&lt;",$_POST[comentarios]);
  2. $texto2 = str_replace(">","&gt;",$texto);
  3. $texto3=bbcode2html($texto2);
  4. echo nl2br($texto3);
  #22 (permalink)  
Antiguo 24/11/2009, 11:39
Avatar de almagropaco_  
Fecha de Ingreso: marzo-2008
Ubicación: Mar del Plata
Mensajes: 854
Antigüedad: 16 años, 7 meses
Puntos: 25
Respuesta: Aporte: Function: bbcode a html

Gracias David por tu respuesta, sabia lo de magic_quotes, no me salia el nombre, pero como funciona, si yo pongo un texto con comillas en la pagina que muestro los resultados no se le agrega la barra \ pero si lo envio desde el formulario si, es rarisimo.
  #23 (permalink)  
Antiguo 24/11/2009, 11:41
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 15 años, 1 mes
Puntos: 334
Respuesta: Aporte: Function: bbcode a html

Código php:
Ver original
  1. $texto = str_replace("<","&lt;",$_POST[comentarios]);
  2.       $texto2 = str_replace(">","&gt;",$texto);
  3.       echo nl2br($texto2)."<br><br>";
  4.       $texto3=bbcode2html($texto2)
  5.       echo nl2br($texto3);

revisa eso para saber si es o no la funcion la del problema
__________________
More about me...
~ @rhyudek1
~ Github
  #24 (permalink)  
Antiguo 24/11/2009, 11:46
Avatar de almagropaco_  
Fecha de Ingreso: marzo-2008
Ubicación: Mar del Plata
Mensajes: 854
Antigüedad: 16 años, 7 meses
Puntos: 25
Respuesta: Aporte: Function: bbcode a html

No lo puedo creer:@ tengo la web en 000webhost.com y la estan revisando, luego probare, pero el nl2br es para reemplazar los saltos de linea por <br>.
  #25 (permalink)  
Antiguo 24/11/2009, 11:48
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 6 meses
Puntos: 839
Respuesta: Aporte: Function: bbcode a html

Justamente, sólo se escapan los datos provenientes de datos externos, como bien se explica en el enlace que te indiqué.

Puedes usar stripslashes para corregir el problema.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #26 (permalink)  
Antiguo 24/11/2009, 12:17
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 15 años, 1 mes
Puntos: 334
Respuesta: Aporte: Function: bbcode a html

comenta si funciono para que no quede mal parado mi aporte u.ú XDDD

saludos!
__________________
More about me...
~ @rhyudek1
~ Github
  #27 (permalink)  
Antiguo 24/11/2009, 13:39
Avatar de almagropaco_  
Fecha de Ingreso: marzo-2008
Ubicación: Mar del Plata
Mensajes: 854
Antigüedad: 16 años, 7 meses
Puntos: 25
Respuesta: Aporte: Function: bbcode a html

Si, con stripslashes() se me soluciono el problema, muchas gracias David.
  #28 (permalink)  
Antiguo 24/11/2009, 15:28
Avatar de Pedro_valencia  
Fecha de Ingreso: diciembre-2007
Ubicación: Valencia
Mensajes: 82
Antigüedad: 16 años, 10 meses
Puntos: 6
Respuesta: Aporte: Function: bbcode a html

Se agradece
__________________
Si te ha servido mi post, ¡dame Karma, es gratis!

- ¿Qué es el éxito? Lo diferente.
  #29 (permalink)  
Antiguo 09/12/2009, 08:44
Avatar de almagropaco_  
Fecha de Ingreso: marzo-2008
Ubicación: Mar del Plata
Mensajes: 854
Antigüedad: 16 años, 7 meses
Puntos: 25
Respuesta: Aporte: Function: bbcode a html

Tengo otro problema:S
Si pongo dos o mas [quote ] [/ quote] se unifica en uno solo, no importa si hay algo en el medio, un ejemplo de lo que pasa:
Cita:
Cita:
<?php echo"Witingo"; ?>[ /quote]
ASDASD
[ quote]<?php echo"Witingo2"; ?>
Estan los quote que cierran al anterior pero no funcionan, ahora pongo todo con espacios [ quote] ya que si no se abre uno, tambien pasa lo mismo con los code, en vez de haber 2 code distinos se unifican en uno solo y quedan los code que abren y cierran en el medio..
Un ejemplo podria ser esto (donde A abre el quote y B lo cierra)
Cita:
A
cita al texto
B
TEXTO INTERMEDIO
A
cita al otro texto
B
Eso deberia representar DOS citas distintas pero queda una sola, solo se toma lo siguiente
Cita:
A
cita al texto
B
TEXTO INTERMEDIO
A
cita al otro texto
B
Y los quotes del medio (o code, ya que pasa lo mismo) no son tomados en cuenta, no importa si hay un texto intermedio como en el ejemplo este tambien queda adentro.
  #30 (permalink)  
Antiguo 09/12/2009, 08:58
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 15 años, 1 mes
Puntos: 334
Respuesta: Aporte: Function: bbcode a html

podrias poner el texto que intentas pasar por la funcion ?
para asi testear en mi pc y revisar que es lo que te falla?

saludos!
__________________
More about me...
~ @rhyudek1
~ Github
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado

SíEste tema le ha gustado a 4 personas




La zona horaria es GMT -6. Ahora son las 17:42.