Foros del Web » Programando para Internet » PHP »

Problema con bbcode

Estas en el tema de Problema con bbcode en el foro de PHP en Foros del Web. Buenas! Estoy haciendo un pequeño sistema de bbcodes y me funcionan todos los simples (negrita, cursiva etc...) el problema viene con los tamaños y los ...
  #1 (permalink)  
Antiguo 23/04/2010, 11:03
 
Fecha de Ingreso: febrero-2008
Mensajes: 269
Antigüedad: 16 años, 9 meses
Puntos: 5
Problema con bbcode

Buenas!

Estoy haciendo un pequeño sistema de bbcodes y me funcionan todos los simples (negrita, cursiva etc...) el problema viene con los tamaños y los colores que hay que poner un valor y no consigo que funcione eso. Aqui dejo el codigo:

Código PHP:
Ver original
  1. <?php
  2.  
  3. $bb_code = array(
  4.     ':)' => '<img src="images/smileys/icon_compress.gif" />',
  5.     ':(' => '<img src="images/smileys/icon_pale.gif" />',
  6.     ':D' => '<img src="images/smileys/icon_biggrin.gif" />',
  7.    
  8.     '[b]' => '<span style="font-weight:bold">',
  9.     '[/b]' => '</span>',
  10.    
  11.     '[i]' => '<span style="font-style:italic">',
  12.     '[/i]' => '</span>',
  13.    
  14.     '[u]' => '<span style="text-decoration:underline">',
  15.     '[/u]' => '</span>',
  16.    
  17.     '[br]' => '<br>',
  18.    
  19.     '[img]' => '<img src="',
  20.     '[/img]' => '" border="0" />',
  21.    
  22.     '[citar]' => '<div id="quote">',
  23.     '[/citar]' => '</div>',
  24.  
  25.     '[center]' => '<div align="center">',
  26.     '[/center]' => '</div>',
  27.  
  28.     '/\[color\=(.*?)\](.*?)\[\/color\]/is' => '<font color="$1">$2</font>'
  29. );
  30. ?>

Esos son los codigos basicos y esto es la funcion

Código PHP:
Ver original
  1. function bbcode($codigo) {
  2.     $search = array_keys($GLOBALS['bb_code']);
  3.     $codigo = str_replace($search, $GLOBALS['bb_code'], htmlentities($codigo));
  4.     return $codigo;
  5. }

Como digo, todos funcionan menos el del color que el BBCode sale como texto normal.

Espero que me podais ayudar
  #2 (permalink)  
Antiguo 23/04/2010, 13:47
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 11 meses
Puntos: 89
Respuesta: Problema con bbcode

El problema, es que el código del color utiliza expresiones regulares, y estás usando str_replace, el cual trabaja solo con texto.

Para lo que deseas, debes usar preg_replace.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #3 (permalink)  
Antiguo 23/04/2010, 15:33
 
Fecha de Ingreso: febrero-2008
Mensajes: 269
Antigüedad: 16 años, 9 meses
Puntos: 5
Respuesta: Problema con bbcode

No sabía eso xD Gracias por responder, aunque ahora me sale otro error.

He cambiado esa función unicamente y ahora me sale esto.

Cita:
Warning: preg_replace() [function.preg-replace]: No ending delimiter ':' found in C:\AppServ\www\MR\Fanfics\includes\functions.php on line 24
No se si esque tengo que adaptar el array a expresiones regulares porque en el manual, todos los ejemplos son solo con expresiones regulares, la función ahora queda asi.

Código PHP:
Ver original
  1. function bbcode($codigo) {
  2.     $search = array_keys($GLOBALS['bb_code']);
  3.     $codigo = preg_replace($search, $GLOBALS['bb_code'], htmlentities($codigo));
  4.     return $codigo;
  5. }

Y el array ni lo he tocado ._.
  #4 (permalink)  
Antiguo 23/04/2010, 15:40
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 11 meses
Puntos: 89
Respuesta: Problema con bbcode

Lo que pasa ahora, es que preg_replace, espera que todas las cadenas sean expresiones regulares, por eso, por ejemplo en la primera carita ( :) ), el dos puntos, lo tomaría como un deimitador. Así que te recomiendo que adaptes tu código a expresiones regulares, o simplemente separa el array en 2... uno con las caritas, y otro con expresiones regulares, y a cada arreglo lo llamas con la función que le corresponde.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #5 (permalink)  
Antiguo 23/04/2010, 15:44
 
Fecha de Ingreso: febrero-2008
Mensajes: 269
Antigüedad: 16 años, 9 meses
Puntos: 5
Respuesta: Problema con bbcode

Cita:
Iniciado por spider_boy Ver Mensaje
Lo que pasa ahora, es que preg_replace, espera que todas las cadenas sean expresiones regulares, por eso, por ejemplo en la primera carita ( :) ), el dos puntos, lo tomaría como un deimitador. Así que te recomiendo que adaptes tu código a expresiones regulares, o simplemente separa el array en 2... uno con las caritas, y otro con expresiones regulares, y a cada arreglo lo llamas con la función que le corresponde.
Vale, algo asi imaginaba pero como de expresiones regulares no tengo ni idea no estaba seguro del todo. He adaptado el resto de codigos como el del color y ahora lo separare en dos arrays o mirare de como adaptar las caritas.

Gracias por la respuesta tan rapida
  #6 (permalink)  
Antiguo 23/04/2010, 15:46
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 15 años, 1 mes
Puntos: 334
Respuesta: Problema con bbcode

revisa esto quiza te interese
es un aporte de alguien misterioso de este foro 1313

http://www.forosdelweb.com/f18/aport...e-html-754210/
__________________
More about me...
~ @rhyudek1
~ Github
  #7 (permalink)  
Antiguo 23/04/2010, 15:50
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 11 meses
Puntos: 89
Respuesta: Problema con bbcode

A ver, puedes adaptar todo el arreglo, para hacerlo funcionar con preg_replace.

Ejemplo :

Código PHP:
Ver original
  1. '/:\)/' => '<img src="images/smileys/icon_compress.gif" />',
  2.     '/:\(/' => '<img src="images/smileys/icon_pale.gif" />',
  3.     ':D' => '<img src="images/smileys/icon_biggrin.gif" />',
  4.     '\[b\]' => '<span style="font-weight:bold">',
  5.     '\[\/b\]' => '</span>',

Podría ser algo así. Prueba y nos cuentas.

PD : Debes escapar los paréntesis, los corchetes y los slashes.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #8 (permalink)  
Antiguo 23/04/2010, 15:57
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 15 años, 1 mes
Puntos: 334
Respuesta: Problema con bbcode

en realidad los smiley combiene mas hacerlos con str_replace =)
__________________
More about me...
~ @rhyudek1
~ Github
  #9 (permalink)  
Antiguo 23/04/2010, 16:26
 
Fecha de Ingreso: febrero-2008
Mensajes: 269
Antigüedad: 16 años, 9 meses
Puntos: 5
Respuesta: Problema con bbcode

Cita:
Iniciado por spider_boy Ver Mensaje
A ver, puedes adaptar todo el arreglo, para hacerlo funcionar con preg_replace.

Ejemplo :

Código PHP:
Ver original
  1. '/:\)/' => '<img src="images/smileys/icon_compress.gif" />',
  2.     '/:\(/' => '<img src="images/smileys/icon_pale.gif" />',
  3.     ':D' => '<img src="images/smileys/icon_biggrin.gif" />',
  4.     '\[b\]' => '<span style="font-weight:bold">',
  5.     '\[\/b\]' => '</span>',

Podría ser algo así. Prueba y nos cuentas.

PD : Debes escapar los paréntesis, los corchetes y los slashes.
Gracias, me estaba matando para que dejara de salirme error XD Soy noob en php, como para meterme en expresiones regulares xD

Cita:
Iniciado por Hidek1 Ver Mensaje
en realidad los smiley combiene mas hacerlos con str_replace =)
Pues mil veces mas facil porque no tendre que escapar los puntos pero no se hacerlo por separado, he probado y no me sale asi que, no me queda otra que calentarme la cabeza con los smilies xD

Etiquetas: bbcode
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.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:45.