Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] buscando substring en cadena

Estas en el tema de buscando substring en cadena en el foro de PHP en Foros del Web. Hola, lo que quiero hacer es sacar de una cabecera de una correo la parte del FROM: que tiene este aspecto <[email protected]> . Para ello ...
  #1 (permalink)  
Antiguo 19/11/2014, 12:37
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 21 años, 10 meses
Puntos: 8
buscando substring en cadena

Hola, lo que quiero hacer es sacar de una cabecera de una correo la parte del FROM: que tiene este aspecto <[email protected]> . Para ello he escrito esto:

preg_match("/^<([\w\s]+)>$/", $headers, $from);

Pero no me devuelve nada, ¿que hago mal?.

Gracias de antemano.

Un saludo.
__________________
Videotutoriales de Drupal
  #2 (permalink)  
Antiguo 19/11/2014, 12:45
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: buscando substring en cadena

¿La cadena a analizar contiene únicamente dicho valor o tiene más texto?

Porque la expresión regular que utilizas es muy estricta, pues al usar ^ y $ le indicas que analice exactamente desde el inicio hasta el final.

Lee lo siguiente: http://www.forosdelweb.com/f18/aport...s-pcre-646110/
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 20/11/2014, 03:25
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 21 años, 10 meses
Puntos: 8
Respuesta: buscando substring en cadena

Cita:
Iniciado por pateketrueke Ver Mensaje
¿La cadena a analizar contiene únicamente dicho valor o tiene más texto?

Porque la expresión regular que utilizas es muy estricta, pues al usar ^ y $ le indicas que analice exactamente desde el inicio hasta el final.

Lee lo siguiente: http://www.forosdelweb.com/f18/aport...s-pcre-646110/
Buenas, gracias por tu respuesta, a día de hoy siempre que vuelvo a tener que lidiar con las expresiones regulares me armo un lío . El tema es que tengo un string muy largo que es la cabecera de un correo .

Más o menos algo así:
xxxxxxxxxxxxxxxxxxxxxxxx <[email protected]>sssssssssssssssssssss

Acabo de probar así
preg_match("/<\w+>/i", $headers, $from);

y var_dump($from) me sigue devolviendo un array vacío :).

Tampo así:
preg_match("/<([\w])+>/i", $headers, $from);


Ni así:
preg_match("/(<[\w]+>)+/i", $headers, $from);


Así he conseguido obtener la palabra Receibed:
preg_match("/[<(\w)>]+/i", $headers, $from);

Código:
El contexto es este:
Received: from [112.108.10.08] by xxxxxx.dddd.com with SMTP (dddd xxx.ssss.com)
 (ArGoSoft Mail Server Pro for WinNT/2000/XP, Version 1.8 (1.8.9.1)); Mon, 17 Nov 2014 15:21:58 +0100
 X-Priority: 1
 X-MSMail-Priority: High
 X-Mailer: PV 6.00
 X-MimeOLE: PV 6.00
 Reply-To: [email protected]
 Message-ID: <CDDDDDDDSSDD>
 From: "Demo" <[email protected]>
 To: [email protected]
 Subject: asunto del tema
 Date: Mon, 17 Nov 2014 15:21:55 +0100
 MIME-Version: 1.0
 C'..
Lo que quiero es "coger" ese string entero y sacar de ahí el mail <[email protected]>(SIN LAS < >) ,pero parece que no he armado bien la expresión regular (no obstante voy a leer inmediatamente ese aporte que tiene buena pinta).

He leído el aporte pero sigo sin conseguirlo :(.
Mil gracias
__________________
Videotutoriales de Drupal

Última edición por Dundee; 20/11/2014 a las 04:41
  #4 (permalink)  
Antiguo 20/11/2014, 05:36
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 21 años, 10 meses
Puntos: 8
Respuesta: buscando substring en cadena

Después de mucho leer y probar y probar y probar jeje, lo he solucionado así.
Código:
if (preg_match("/([a-zA-Z_.+-]+)@([a-zA-Z_-]+).([a-zA-Z]{2,4})/i", $string, $matches)) {
  echo "Match was found email<br />";
   var_dump($matches[0]). "<br />";
}
Un verdadero coñazo esto de las expresiones regular, no es que sea complicado de entender , sino que es imposible de recordar (tendré a mano una chuleta para que no me vuelva a pasar).

Un saludo
__________________
Videotutoriales de Drupal

Etiquetas: buscando, cadena, substring
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 17:44.