Foros del Web » Programando para Internet » PHP »

BBCode, "citar" un mensaje con "cita"...

Estas en el tema de BBCode, "citar" un mensaje con "cita"... en el foro de PHP en Foros del Web. Hola gente... Estoy teniendo un problema en uno de los codigos que uso para bbcode, es el de las citas. La funcion cumple bien su ...
  #1 (permalink)  
Antiguo 03/03/2006, 14:36
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 20 años, 11 meses
Puntos: 2
BBCode, "citar" un mensaje con "cita"...

Hola gente...

Estoy teniendo un problema en uno de los codigos que uso para bbcode, es el de las citas.

La funcion cumple bien su comentido cuando se cita un mensaje normal, pero cuando se cita un mensaje que, a su vez, tiene una cita incorporada, solo cita el primer mensaje y deja los codigos de la cita que tenia este...

Esta es la linea que uso:
Código PHP:
$texto preg_replace("`\[citar=(.*?)\](.*?)\[/citar\]`is"'<span class="bold">$1 escribió:</span><div class="topic_quote">$2</div>'$texto); 
Esto funcionaria bien si tengo este texto:
[citar=FuLaNo_]texto de la cita[/citar]
ej:


Pero funcionaria mal si tengo este otro mensaje:
[citar=FuLaNo_][citar=otro_usuario]texto de la cita[/citar][/citar]
ej:


Si alguien puede ayudarme se lo agradeceria mucho...
__________________
I Love Programming...
  #2 (permalink)  
Antiguo 12/10/2006, 16:45
 
Fecha de Ingreso: diciembre-2004
Mensajes: 278
Antigüedad: 19 años, 4 meses
Puntos: 0
yo también me encuentro con el mismo problema... :(
  #3 (permalink)  
Antiguo 13/07/2007, 04:47
 
Fecha de Ingreso: diciembre-2004
Mensajes: 278
Antigüedad: 19 años, 4 meses
Puntos: 0
Re: BBCode, "citar" un mensaje con "cita"...

Ha pasado mucho tiempo, igual ya lo solucionaste... pero hoy me he levantado y se me encendió la bombilla.
Prueba con esto:
Código PHP:
$patron '/\[QUOTE=([a-zA-Z0-9_]*)\]([^\[\]]+)\[\/QUOTE\]/';
$replace "<div class=\"cita\">Cita de \\1
    <div style=\"border:1px solid\">\\2</div>
</div>"
;
while( 
preg_match$patron$texto ) )
{
    
$texto preg_replace$patron$replace$texto);

Consiste en que el patrón no permita los caracteres [ y ] entre las etiquetas [QUOTE] y [\QUOTE].
Luego en el bucle se van reemplazando de dentro hacia fuera.
  #4 (permalink)  
Antiguo 13/07/2007, 08:10
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: BBCode, "citar" un mensaje con "cita"...

Esta bien tu codigo PERO deberias de hacer un codigo que cuente cuantos [quote] abiertos hay y si son mayores a los cerrados, que automaticamente al finale agregue los [\quote] faltantes, asi no se descuadra tu pagina.

Saludos.
  #5 (permalink)  
Antiguo 13/07/2007, 09:30
 
Fecha de Ingreso: diciembre-2004
Mensajes: 278
Antigüedad: 19 años, 4 meses
Puntos: 0
Re: BBCode, "citar" un mensaje con "cita"...

Pero si hay algún [QUOTE] sin cerrar, entonces no reemplazará porque no se cumplirá la expresión regular y por lo tanto no descuadrará... no?

Si te refieres a que se vea un [QUOTE] por ahi perdido, eso me da igual, es problema del usuario etiquetar bien su contenido (según mi punto de vista).
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 09:24.