Foros del Web » Programando para Internet » PHP »

Obtener mail de un archivo con preg_match_all

Estas en el tema de Obtener mail de un archivo con preg_match_all en el foro de PHP en Foros del Web. Bueno amigos necesito obtener todos los mails que se encuentran en el archivo del mainlog que deja exim y hasta ahora tengo el siguiente codigo, ...
  #1 (permalink)  
Antiguo 20/10/2010, 17:04
Avatar de xalupeao  
Fecha de Ingreso: mayo-2008
Ubicación: Santiago, Chile
Mensajes: 749
Antigüedad: 15 años, 11 meses
Puntos: 12
Obtener mail de un archivo con preg_match_all

Bueno amigos necesito obtener todos los mails que se encuentran en el archivo del mainlog que deja exim y hasta ahora tengo el siguiente codigo, pero realmente las expresiones regulares no son mi fuerte por ende no he podido dar con el clavo.

Me pueden ayudar a formar bien la expresión regular para la búsqueda.


Código PHP:
Ver original
  1. #archivo para examinar
  2.         $archivo = '/var/log/exim/mainlog';
  3.         #buscamos el archivo mainlog del exim
  4.         if(file_exists($archivo)){
  5.             #vemos si es posible tomar el contenido del archivo y lanzarlo a un string
  6.             if($base=file_get_contents($archivo)){
  7.                 #obtenemos todos los mails de la variable $base que tiene todo el archivo
  8.                 preg_match_all('/^[a-zA-Z0-9]+(\.[_a-zA-Z0-9-]+)*@([_a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]{2,200}\.[a-zA-Z]{2,6}$/',$base,$emails);
  9.                 #mostramos el array emails
  10.                 print_r($emails);
  11.             }else{
  12.                 print 'El archivo '.$archivo.' no se ha podido leer correctamente
  13. ';
  14.             }
  15.         #si no existe el archivo
  16.         }else{
  17.             print 'El archivo '.$archivo.' no existe...
  18. ';
  19.         }


Extracto del archivo mainlog:

Cita:
2010-08-28 13:51:53 H=correo2.gtdinternet.com [200.75.0.11] incomplete transaction (connection lost) from <[email protected]> for [email protected]
2010-08-28 13:51:53 unexpected disconnection while reading SMTP command from correo2.gtdinternet.com [200.75.0.11]
2010-08-28 13:51:53 H=122-180-179-94.pool.ukrtel.net (ukrtel.net) [94.179.180.122] incomplete transaction (QUIT) from <[email protected]>
2010-08-28 13:51:53 1OpPZJ-0006RS-DN <= <> H=(ns) [190.208.17.163] P=esmtp S=3512 id=J4dErcD9Y00000abc@ns T="Notificaci=?unicode-1-1-utf-7?Q?+APM-n \n de \n estado \n de \n entrega \n (Error)?=" from <> for [email protected]
Muchas gracias.
__________________
Hosting en Chile en Silverhost - La solución en Hosting en Chile.
  #2 (permalink)  
Antiguo 20/10/2010, 17:52
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Obtener mail de un archivo con preg_match_all

el problema de la expresión es usar ^ y $ ya que son delimitadores de inicio y fin de cadena, por lo cual es incongruente pues buscas todas las apariciones de la expresión...

tan solo elimina dichos caracteres, de paso te invito a leer 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/10/2010, 18:00
Avatar de xalupeao  
Fecha de Ingreso: mayo-2008
Ubicación: Santiago, Chile
Mensajes: 749
Antigüedad: 15 años, 11 meses
Puntos: 12
Respuesta: Obtener mail de un archivo con preg_match_all

entonce ^ y $ no van en preg_match_all ?
__________________
Hosting en Chile en Silverhost - La solución en Hosting en Chile.
  #4 (permalink)  
Antiguo 20/10/2010, 18:03
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Obtener mail de un archivo con preg_match_all

Cita:
Iniciado por xalupeao Ver Mensaje
entonce ^ y $ no van en preg_match_all ?
mientras sepas lo que hacen me imagino que no deberías hacerte dicha pregunta...

ahora, que si no sabes lo que hacen lo mejor es que estudies para que sirven, ¿como ves?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 20/10/2010, 18:25
Avatar de xalupeao  
Fecha de Ingreso: mayo-2008
Ubicación: Santiago, Chile
Mensajes: 749
Antigüedad: 15 años, 11 meses
Puntos: 12
Respuesta: Obtener mail de un archivo con preg_match_all

oye pate ahora mira los tiro a un ciclo foreach()

pero la salida me dice

array array .. array

Código PHP:
Ver original
  1. foreach($emails as $key => $email){
  2.           print $email;
  3. }
__________________
Hosting en Chile en Silverhost - La solución en Hosting en Chile.
  #6 (permalink)  
Antiguo 20/10/2010, 20:41
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Obtener mail de un archivo con preg_match_all

por favor, lee el manual

preg_match_all() devuelve un array multidimensional, y tu estas tratando los resultados como un array simple....

de verdad, no pierdas el tiempo haciendo las cosas a ciegas, documentate firme y pisa seguro!!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: mail
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 15:23.