Foros del Web » Programando para Internet » PHP »

Pequeño problema BBCode

Estas en el tema de Pequeño problema BBCode en el foro de PHP en Foros del Web. Tengo un problema con los BBCode y es que las barras laterales ("/") para las URL no aparecen, tengo que siguiente código: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código ...
  #1 (permalink)  
Antiguo 01/05/2014, 03:17
Avatar de iEnrique  
Fecha de Ingreso: abril-2013
Ubicación: España
Mensajes: 346
Antigüedad: 11 años, 8 meses
Puntos: 5
Pequeño problema BBCode

Tengo un problema con los BBCode y es que las barras laterales ("/") para las URL no aparecen, tengo que siguiente código:

Código PHP:
Ver original
  1. $texto = preg_replace('/\[link url=(.*?)\](.*?)[/link\]/is', '<a href="$1">$2</a>', $_POST['text']);
  2. echo $texto;

Y lo que muestra es:

Código HTML:
Ver original
  1. <a href="http:  google.es>Google</a>

¿Qué puedo hacer?

Gracias.
  #2 (permalink)  
Antiguo 01/05/2014, 08:06
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 8 meses
Puntos: 292
Respuesta: Pequeño problema BBCode

Código PHP:
Ver original
  1. <?php
  2. $_POST['text'] = 'Estoy contribuyendo con [link url=http://www.forosdelweb.com]Foros del Web[/link], el foro mas grande de programacion en espanol';
  3. $patt   = '@\[link url="?(?:http://)?([A-Z0-9.]{5,})"?\]([A-Z0-9. ]{1,})\[\/link\]@is';
  4.  
  5. /*
  6. Notar que uso (?:http://)?  en vez de (http://)? porque debo poder referenciar a los demas elementos ($1 %2 ...$n) siempre en el mismo orden independientemente de si ese el grupo (http://) aparece o no en el enlace.
  7.  
  8. Simplemente si existe no se le asigna posicion para reemplazos
  9. */  
  10. $texto = preg_replace($patt, '<a href="$1">$2</a>',$_POST['text'] );
  11. echo $texto;

Resultando en..

Código HTML:
Ver original
  1. Estoy contribuyendo con <a href="www.forosdelweb.com">Foros del Web</a>, el foro mas grande de programacion en espanol
__________________
Salu2!

Última edición por Italico76; 01/05/2014 a las 09:35
  #3 (permalink)  
Antiguo 01/05/2014, 15:15
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años, 1 mes
Puntos: 977
Respuesta: Pequeño problema BBCode

Te faltó escapar el corchete y la barra inclinada de [/link] en la expresión regular.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #4 (permalink)  
Antiguo 01/05/2014, 15:19
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 8 meses
Puntos: 292
Respuesta: Pequeño problema BBCode

Cita:
Iniciado por Alexis88 Ver Mensaje
Te faltó escapar el corchete y la barra inclinada de [/link] en la expresión regular.
Cierto... por eso cuando se parsean urls con regex es mejor no usar / como caracter de inicio y fin de la expresion; por eso use @
__________________
Salu2!
  #5 (permalink)  
Antiguo 01/05/2014, 15:24
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años, 1 mes
Puntos: 977
Respuesta: Pequeño problema BBCode

Exacto, así se evita el conflicto con las barras inclinadas. iEnrique, para mayor información acerca de esto, te sugiero visitar este enlace.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Etiquetas: bbcode, pequeño
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 23:22.