Foros del Web » Programando para Internet » PHP »

Problema con preg_replace

Estas en el tema de Problema con preg_replace en el foro de PHP en Foros del Web. Hola muchachos! Me falta práctica de expresiones regulares, me estoy documentando y tal, pero no consigo hacer una cosa. Tengo este texto en variable: Código ...
  #1 (permalink)  
Antiguo 25/01/2010, 13:12
 
Fecha de Ingreso: octubre-2005
Mensajes: 240
Antigüedad: 18 años, 7 meses
Puntos: 1
Problema con preg_replace

Hola muchachos!

Me falta práctica de expresiones regulares, me estoy documentando y tal, pero no consigo hacer una cosa. Tengo este texto en variable:

Código PHP:
....ANTES....
[
more]Seguir leyendo[/more]
....
DESPUES.... 
Me ingenie una expresión regular para transformar [more]Seguir leyendo[/more] en un enlace:

Código PHP:
$contenido preg_replace("/\[more\](.*)\[\/more\]/","<a href='#'>$1</a>",$contenido); 
Pero me interesa que luego lo que viene ....DESPUES.... no me quede en la variable.

¿Alguna idea?

Un saludo!
  #2 (permalink)  
Antiguo 25/01/2010, 13:15
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Problema con preg_replace

Puedes hacerlo de esta forma
Código PHP:
Ver original
  1. $contenido = preg_replace("/\[more\](.*?)\[\/more\].*/is","<a href='#'>$1</a>",$contenido);  
  2. echo $contenido;
No he hecho la prueba, pero debe funcionar.

Edito:
Hice la prueba y sí funciona.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 25/01/2010, 13:19
 
Fecha de Ingreso: octubre-2005
Mensajes: 240
Antigüedad: 18 años, 7 meses
Puntos: 1
Respuesta: Problema con preg_replace

Código PHP:
$contenido preg_replace("/(.*)\[more\](.*)\[\/more\]/","$1<a href='#'>$2</a>",$contenido);

echo 
$contenido
Tal cual lo he puesto en el php, pero me sigue aparenciendo lo de despues de [more]Seguir leyendo[/more]
  #4 (permalink)  
Antiguo 25/01/2010, 13:19
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Problema con preg_replace

Código PHP:
Ver original
  1. $contenido = preg_replace("/\[more\](.*?)\[\/more\].*/is","<a href='#'>$1</a>",$contenido);  
  2. echo $contenido;
Lo corregí, verifica el nuevo.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 25/01/2010, 13:21
 
Fecha de Ingreso: octubre-2005
Mensajes: 240
Antigüedad: 18 años, 7 meses
Puntos: 1
Respuesta: Problema con preg_replace

Gracias Crack!

Me funcionó de perlas.
  #6 (permalink)  
Antiguo 25/01/2010, 13:51
 
Fecha de Ingreso: octubre-2005
Mensajes: 240
Antigüedad: 18 años, 7 meses
Puntos: 1
Respuesta: Problema con preg_replace

Aunque me gustaría saber, que significa el "is" del final, y porque pones (.*?), pudiendo ser (.*) o eso creo.

Un saludo!
  #7 (permalink)  
Antiguo 25/01/2010, 13:53
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Problema con preg_replace

(.*?), pudiendo ser (.*) .. en eso tienes razón.. el ? indica condicional pero el * es 0 o mas asi que ya se condiciona solo por decirlo asi

el is es
i <-- case insensitive.. osea que da lo mismo si es mayúscula o minúscula
s <-- para que incluya los saltos de linea

saludos!
__________________
More about me...
~ @rhyudek1
~ Github
  #8 (permalink)  
Antiguo 25/01/2010, 13:56
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Problema con preg_replace

Puedes hacerlo de las dos formas (.*) o (.*?), lo que sucede es que quiero que sea "lazy". Te sugiero que busques en internet sobre "lazy regular expression", para que entiendas lo que te quiero decir. Lo de la i es que reconozca tanto mayuscula como minuscula y lo de la s es para que el punto reconozca los saltos de lineas como parte del código.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #9 (permalink)  
Antiguo 25/01/2010, 14:19
 
Fecha de Ingreso: octubre-2005
Mensajes: 240
Antigüedad: 18 años, 7 meses
Puntos: 1
Respuesta: Problema con preg_replace

Gracias hidek1 y abimaelrc por sus respuestas,

Ya entendí porqué no me funcionaba, básicamente era la "s" del "is", porque mi contenido si tenía saltos de lineas. Hoy he aprendido mas siquiera un poquito más.

Un saludo!

Etiquetas: Ninguno
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:47.