Foros del Web » Programando para Internet » PHP »

Ereg replace: problema eliminando demasiadas cosas por falta de control

Estas en el tema de Ereg replace: problema eliminando demasiadas cosas por falta de control en el foro de PHP en Foros del Web. Hola, Tengo un texto que tiene etiquetas como [1] y [/1]. El caso es que necesito una función que elimine los [1] [/1] y lo ...
  #1 (permalink)  
Antiguo 01/12/2008, 04:08
Usuario no validado
 
Fecha de Ingreso: marzo-2004
Mensajes: 349
Antigüedad: 20 años, 1 mes
Puntos: 0
Ereg replace: problema eliminando demasiadas cosas por falta de control

Hola,

Tengo un texto que tiene etiquetas como [1] y [/1]. El caso es que necesito una función que elimine los [1] [/1] y lo que haya entre ellos... he puesto una como la que sigue:

$texto=ereg_replace ("\[1\](.*)\[\/1\]", " ", $texto);

Pero resulta que me borra desde el primer [1] hasta el último [/1], con lo que si hay 10, coge todo lo que haya en medio de esos 10, incluyendo cosas que no quiero borrar, y se las cepilla... ¿qué puedo hacer?
  #2 (permalink)  
Antiguo 01/12/2008, 08:25
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Ereg replace: problema eliminando demasiadas cosas por falta de control

Por defecto los cuantificadores "intentan" coincidir con todo lo que puedan. Esto se conoce como greedy match o comportamiento ambicioso.
Por eso el patrón coincide como lo hace.

Tenés dos soluciones posibles:
1.-
Código PHP:
$texto=ereg_replace ("\[1\]([^\[]*)\[/1\]"" "$texto); 
Esto te vale si sabés que nunca habrá un [ en la cadena que querés eliminar.
2.-
Código PHP:
$texto=preg_replace ("#\[1\](.*?)\[/1\]#"" "$texto); 
El modificador ? junto a un cuantificador indica que ese cuantificador debe coincidir con la menor cadena posible. Pero como no es soportado en las funciones ereg*, hay que usar las funciones de perl (preg*).


Saludos.
  #3 (permalink)  
Antiguo 01/12/2008, 09:15
Usuario no validado
 
Fecha de Ingreso: marzo-2004
Mensajes: 349
Antigüedad: 20 años, 1 mes
Puntos: 0
Respuesta: Ereg replace: problema eliminando demasiadas cosas por falta de control

Hola Alvlin, muchas gracias por tu respuesta en este y otro post. Voy a trabajar con ellos y te digo algo.
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 03:54.