Foros del Web » Programando para Internet » PHP »

expresión regular que funciona a medias

Estas en el tema de expresión regular que funciona a medias en el foro de PHP en Foros del Web. Hola, no consigo hacer que funcione una expresión para capturar el siguiente código de dentro de un texto : <p> Mapa: <I>Mar del Norte, nº ...
  #1 (permalink)  
Antiguo 03/12/2009, 09:44
 
Fecha de Ingreso: noviembre-2009
Mensajes: 24
Antigüedad: 14 años, 5 meses
Puntos: 0
expresión regular que funciona a medias

Hola, no consigo hacer que funcione una expresión para capturar el siguiente código de dentro de un texto :


<p> Mapa: <I>Mar del Norte, nº 18 Chozas de Canales</i></p>


Con la expresión <p>[\s]+Mapa:(.*)<\/p> no consigo capturarlo pero si me funciona para este otro trozo de código :

<p> Mapa: <i>C/los caños Toledo</i> </p>

Asi que no sé donde está el error, por qué con la primera no funciona y con la segunda si ? .

gracias y un saludo
  #2 (permalink)  
Antiguo 03/12/2009, 09:57
 
Fecha de Ingreso: octubre-2009
Mensajes: 125
Antigüedad: 14 años, 5 meses
Puntos: 1
Respuesta: expresión regular que funciona a medias

no entiendo tu problema a que te refieres con capturar??
  #3 (permalink)  
Antiguo 03/12/2009, 10:02
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: expresión regular que funciona a medias

Código php:
Ver original
  1. $string = '<p> Mapa: <I>Mar del Norte, nº 18 Chozas de Canales</i></p>';
  2. $string = utf8_decode($string);
  3. $string = preg_match('/^\<p\>\sMapa:\s\<i\>(.*)\<\/i\>\<\/p\>/i',$string,$retorno);
  4. echo $retorno[1];

a mi me funciono bien.. :B

saludos!
__________________
More about me...
~ @rhyudek1
~ Github
  #4 (permalink)  
Antiguo 03/12/2009, 10:03
 
Fecha de Ingreso: noviembre-2009
Mensajes: 24
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: expresión regular que funciona a medias

Perdón, para que funcione con preg_match y consiga "capturar" el código .

Hago preg_match <p>[\s]+Mapa:(.*)<\/p> pero sólo funciona con

<p> Mapa: <i>C/los caños Toledo</i> </p>

y no con

<p> Mapa: <I>Mar del Norte, nº 18 Chozas de Canales</i></p>


No sé que puede ser
  #5 (permalink)  
Antiguo 03/12/2009, 10:03
 
Fecha de Ingreso: noviembre-2009
Mensajes: 24
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: expresión regular que funciona a medias

Cita:
Iniciado por Hidek1 Ver Mensaje
Código php:
Ver original
  1. $string = '<p> Mapa: <I>Mar del Norte, nº 18 Chozas de Canales</i></p>';
  2. $string = utf8_decode($string);
  3. $string = preg_match('/^\<p\>\sMapa:\s\<i\>(.*)/i',$string,$retorno);
  4. echo $retorno[1];

a mi me funciono bien.. :B

saludos!

Gracias ! ahora lo pruebo y te digo
  #6 (permalink)  
Antiguo 03/12/2009, 11:25
 
Fecha de Ingreso: noviembre-2009
Mensajes: 24
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: expresión regular que funciona a medias

Lo he probado pero no funciona, sólo funciona si la cadena exacta es '<p> Mapa: <I>Mar del Norte, nº 18 Chozas de Canales</i></p>'

no lo he dicho antes pero el texto es muy largo y hay más caracteres alrededor :
por ejemplo :


'<h1>Blalalabala</h1></p>Blalalba<p> Mapa: <I>Mar del Norte, nº 18 Chozas de Canales</i></p>Clalsala<p>Blalalbla'


Gracias! y un saludo
  #7 (permalink)  
Antiguo 03/12/2009, 11:26
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: expresión regular que funciona a medias

solo quitale el ^
$string = preg_match('/^\<p\>\sMapa:\s\<i\>(.*)/i',$string,$retorno);
__________________
More about me...
~ @rhyudek1
~ Github
  #8 (permalink)  
Antiguo 03/12/2009, 11:58
 
Fecha de Ingreso: noviembre-2009
Mensajes: 24
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: expresión regular que funciona a medias

Cita:
Iniciado por Hidek1 Ver Mensaje
solo quitale el ^
$string = preg_match('/^\<p\>\sMapa:\s\<i\>(.*)/i',$string,$retorno);
Gracias !
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 01:15.