Foros del Web » Programando para Internet » PHP »

Expresión regular simple

Estas en el tema de Expresión regular simple en el foro de PHP en Foros del Web. Tengo un problema que no consigo resolver, parece simple, pero no se porque no me funciona. En una variable de texto tengo subcadenas que corresponden ...
  #1 (permalink)  
Antiguo 04/03/2008, 02:08
 
Fecha de Ingreso: octubre-2005
Mensajes: 240
Antigüedad: 18 años, 7 meses
Puntos: 1
Expresión regular simple

Tengo un problema que no consigo resolver, parece simple, pero no se porque no me funciona.

En una variable de texto tengo subcadenas que corresponden a las imagenes:

<img src="http://localhost/RM2/fotos/2007/11/auditt.JPG" alt="Audi TT 2.0" border="1" height="289" width="447" />

Y solo lo que quiero hacer es añadirle <p></p> a los lados, para eso uso una expresion regular:

$contenido = preg_replace("|(<img(.*)>)|","<p>$1</p>",$contenido);

Pero no entiendo muy bien, porque solo me pone la primera <p> y la del final no. Alguna idea?

Saludos a to2
  #2 (permalink)  
Antiguo 04/03/2008, 05:38
 
Fecha de Ingreso: octubre-2005
Mensajes: 240
Antigüedad: 18 años, 7 meses
Puntos: 1
Re: Expresión regular simple

Será tan complicado que nadie puede aportar una ayudita?
  #3 (permalink)  
Antiguo 04/03/2008, 06:04
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Re: Expresión regular simple

Estás usando mal la expresión, en tanto que no estás considerando que, por defecto, la expresión coincide con la mayor cadena posible (lo que se llama greedy match).
Para que esto no suceda, tenés que usar el modificador U al final del patrón:
http://www.php.net/pcre
http://www.php.net/manual/es/referen...ern.syntax.php
http://www.php.net/manual/es/referen....modifiers.php

Así que, el patrón debería ser

Código:
preg_replace('|(<img.*>)|U', "<p>$1</p>", $contenido);
O, también podés usar el modificador ? para indicarle al cuantificador * que debe coincidir con la menor cadena posible:

Código:
preg_replace('|(<img.*?>)|', "<p>$1</p>", $contenido);

Saludos.
  #4 (permalink)  
Antiguo 04/03/2008, 06:28
 
Fecha de Ingreso: octubre-2005
Mensajes: 240
Antigüedad: 18 años, 7 meses
Puntos: 1
Re: Expresión regular simple

Gracias, tu aportación solucionó mi problema.

Un saludo!
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 21:07.