Foros del Web » Programando para Internet » PHP »

Extractor de correos

Estas en el tema de Extractor de correos en el foro de PHP en Foros del Web. Hola a todos Como podría cojer un texto en el cual se encuentren varios correos electrónicos y que me queden solo estos separados por comas? ...
  #1 (permalink)  
Antiguo 14/12/2005, 15:28
Avatar de Kernellover  
Fecha de Ingreso: noviembre-2002
Ubicación: Perdido
Mensajes: 251
Antigüedad: 22 años
Puntos: 0
Extractor de correos

Hola a todos

Como podría cojer un texto en el cual se encuentren varios correos electrónicos y que me queden solo estos separados por comas?

He estado investigando un poco y he visto que con las expresiones regulares se podría hacer pero no me aclaro mucho, me podríais ayudar a entender el proceso? Algun buen tutorial? algo por donde empezar?

Se que hay una funcion que se llama eregi_replace(string pattern,string replacement,string string) si suponemos que el texto inicial es
Código:
hola, mi correo es [email protected], el de mi suegra [email protected] y el de mi gato [email protected] yata.
Me gustaría que quedara algo así
Gracias de antemano por cualquier información
  #2 (permalink)  
Antiguo 14/12/2005, 15:31
Avatar de Kernellover  
Fecha de Ingreso: noviembre-2002
Ubicación: Perdido
Mensajes: 251
Antigüedad: 22 años
Puntos: 0
De echo con averiguar como funcionan las sequencias de las expresiones regulares creo que me las podría apañar para sacar el caso, pero si alguien se anima y me da un poco de luz para orientarme, aunque solo sea un linternazo, se lo agradecería mucho.

Gracias nuevamente
  #3 (permalink)  
Antiguo 14/12/2005, 16:12
Avatar de Kernellover  
Fecha de Ingreso: noviembre-2002
Ubicación: Perdido
Mensajes: 251
Antigüedad: 22 años
Puntos: 0
he encontrado otra funcion que creo que me sirve mejor preg_match_all(string patron,string asunto,array &coincidencias[,int banderas[,int desplazamiento]])
Se ve que esta fucción guarda en un arrray los elementos que coinciden con la secuencia patrón de la expresión regular.

Ahora solo me falta saber como se detecta un correo electrónico con las expresiones regulares, pero no entiendo como funcionan... :(
  #4 (permalink)  
Antiguo 14/12/2005, 16:31
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 19 años, 8 meses
Puntos: 17
Para expresiones regulares de mails en http://www.regexlib.com/DisplayPatterns.aspx puedes encontrar varias.
  #5 (permalink)  
Antiguo 15/12/2005, 12:28
Avatar de Kernellover  
Fecha de Ingreso: noviembre-2002
Ubicación: Perdido
Mensajes: 251
Antigüedad: 22 años
Puntos: 0
Muchas gracias Seppo, me va de perlas para lo que quiero hacer
  #6 (permalink)  
Antiguo 18/12/2005, 15:58
Avatar de Kernellover  
Fecha de Ingreso: noviembre-2002
Ubicación: Perdido
Mensajes: 251
Antigüedad: 22 años
Puntos: 0
Esto ha quedado así, lo pongo en un simple ejemplo para quien le interese.

NOTA: ya se que es un chorro de expreión regular pero es la bomba porque no admite según que correos falsos o mal sentenciados.

Código PHP:
$correo_destinatarios="hola, mi correo es [email protected], el de mi suegra [email protected] y el de mi gato [email protected] yata.";
 
$secuencia"(([a-zA-Z0-9_\-])+(\.([a-zA-Z0-9_\-])+)*@((\[(((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5])))\.(((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5])))\.(((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5])))\.(((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5]))\]))|((([a-zA-Z0-9])+(([\-])+([a-zA-Z0-9])+)*\.)+([a-zA-Z])+(([\-])+([a-zA-Z0-9])+)*)))"

preg_match_all ($secuencia$correo_destinatarios$correo);
 
for(
$x=0;$x<count($correo[0]);$x++){
    
$mail .= $correo[0][$x].", ";
}
 
echo 
$mail
Si nos fijamos, en la variable $correo_destinatarios hay el texto mezclado junto con varios correos electrónicos. La variable $secuencia contiene la cadena de la expresión regular de un correo electrónico. En la variable $correo tenemos un array multidimensional y en la posición [0] tenemos un array con el resultado de las coincidencias de toda la expresión regular.

Para verlo claro he puesto el for así a lo tonto, espero que de este modo quede mas claro.


Suerte con vuestros proyectos.
  #7 (permalink)  
Antiguo 18/12/2005, 16:45
 
Fecha de Ingreso: mayo-2004
Ubicación: Bolivia
Mensajes: 48
Antigüedad: 20 años, 6 meses
Puntos: 2
facil

www.tecnomarketing.com
txtxtract
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 14:05.