Foros del Web » Programando para Internet » PHP »

¿Cómo importo direcciones de correo desde un archivo, via php a mysql?

Estas en el tema de ¿Cómo importo direcciones de correo desde un archivo, via php a mysql? en el foro de PHP en Foros del Web. Estoy buscando la manera de hacer un script, que permita subir un archivo de texto, que tenga cualquier información, pero incluya direcciones de correo, y ...
  #1 (permalink)  
Antiguo 14/01/2009, 09:12
Avatar de arielcasanova  
Fecha de Ingreso: octubre-2004
Ubicación: Bahía Blanca - Argentina
Mensajes: 332
Antigüedad: 20 años, 1 mes
Puntos: 1
¿Cómo importo direcciones de correo desde un archivo, via php a mysql?

Estoy buscando la manera de hacer un script, que permita subir un archivo de texto, que tenga cualquier información, pero incluya direcciones de correo, y que el script aísle estas direcciones, y las cargue en una tabla de la base de datos.

Entonces:
1) Upload del archivo (esto lo tengo resuelto)
2) Extraer del resto de la información, las direcciones de correo: habría que detectar las "@" y lo que esté antes, y después, incluidos los tipos de dominio, es decir, el script debería identificar una @, la cadena de caracteres pegada a su izquierda, y la pegada a su derecha, un punto, otra cadena de dos o tres caracteres, y quizá, otro punto y una cadena de dos caracteres ([email protected], por ejemplo).
3) Generar una serie de inserts para cargar esas direcciones con un array, en una tabla de la base de datos.

Alguien puede darme una mano con esto?
__________________
Ariel Casanova
diseño y desarrollo web estratégico
www.emporia.com.ar
  #2 (permalink)  
Antiguo 14/01/2009, 09:18
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 16 años, 4 meses
Puntos: 416
Respuesta: ¿Cómo importo direcciones de correo desde un archivo, via php a mysql?

Cita:
2) Extraer del resto de la información, las direcciones de correo: habría que detectar las "@" y lo que esté antes, y después, incluidos los tipos de dominio, es decir, el script debería identificar una @, la cadena de caracteres pegada a su izquierda, y la pegada a su derecha, un punto, otra cadena de dos o tres caracteres, y quizá, otro punto y una cadena de dos caracteres ([email protected], por ejemplo).
3) Generar una serie de inserts para cargar esas direcciones con un array, en una tabla de la base de datos.
Lo que necesitas se llama Expresiones regulares.

Echale una miradita a este aporte de pateketrueke:
http://www.forosdelweb.com/f18/aport...s-pcre-646110/
Si tienes problemas creando el patron, pasa por aqui y te ayudamos. Aunque ya hay muchos patrones en internet para detectar una direccion de correo.

Con respecto a tu 3era duda, eso de seguro lo sabes hacer. Pero toquemos ese tema cuando la expresion regular este completa.
  #3 (permalink)  
Antiguo 14/01/2009, 09:45
Avatar de arielcasanova  
Fecha de Ingreso: octubre-2004
Ubicación: Bahía Blanca - Argentina
Mensajes: 332
Antigüedad: 20 años, 1 mes
Puntos: 1
Respuesta: ¿Cómo importo direcciones de correo desde un archivo, via php a mysql?

Gracias, ronruby.
Estuve googleando y mirando el post que me recomendaste
el código para extraer las direcciones del texto, me quedó así:
Código:
if (isset($_REQUEST['text']) && !empty($_REQUEST['text'])) {

  $texto = $_REQUEST['text'];
}


if (!empty($texto)) {
  $variable = preg_match_all(
    "/[a-z0-9]+([_\\.-][a-z0-9]+)*@([a-z0-9]+([\.-][a-z0-9]+)*)+\\.[a-z]{2,}/i",
    $texto,
    $coincide
  );

  if ($variable) {
    foreach(array_unique($coincide[0]) as $email) {
      echo $email . "<br />";
    }
  }
  else {
    echo "No encontró direcciones";
  }
}
Ahora estoy viendo cómo hago el array con los inserts.

gracias de nuevo.
__________________
Ariel Casanova
diseño y desarrollo web estratégico
www.emporia.com.ar
  #4 (permalink)  
Antiguo 14/01/2009, 09:51
Avatar de arielcasanova  
Fecha de Ingreso: octubre-2004
Ubicación: Bahía Blanca - Argentina
Mensajes: 332
Antigüedad: 20 años, 1 mes
Puntos: 1
Respuesta: ¿Cómo importo direcciones de correo desde un archivo, via php a mysql?

ok... en vez de echo $email, puse

$ins="INSERT INTO me_contactos (id_usuario, id_grupo, correo) VALUES ('$id_usuario', '1', '$email')";
if (mysql_query($ins))
{
$row++;
echo "$email ingresado<br/>";
}

así que ya lo ingresa en la db... lo que no me sale es el tema de subir el archivo y que tome la data de ahí... no sé cómo pasar esa info como variable para convertir... ¿alguna idea?
__________________
Ariel Casanova
diseño y desarrollo web estratégico
www.emporia.com.ar
  #5 (permalink)  
Antiguo 14/01/2009, 09:58
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 16 años, 4 meses
Puntos: 416
Respuesta: ¿Cómo importo direcciones de correo desde un archivo, via php a mysql?

Dices que tienes el upload del archivo hecho, entonces solo seria leer el contenido usando alguna funcion de manejo de archivo. Yo te recomiendo file_get_contents().

Obtienes todo el contenido de el archivo usando file_get_contents() y luego aplicas la expresion regular a todo el archivo. Eso encontrara todas las apariciones de direcciones de correo en el documento y las insertara en la base de datos.
  #6 (permalink)  
Antiguo 14/01/2009, 10:03
Avatar de arielcasanova  
Fecha de Ingreso: octubre-2004
Ubicación: Bahía Blanca - Argentina
Mensajes: 332
Antigüedad: 20 años, 1 mes
Puntos: 1
Respuesta: ¿Cómo importo direcciones de correo desde un archivo, via php a mysql?

gracias! lo reviso más tarde y te cuento
__________________
Ariel Casanova
diseño y desarrollo web estratégico
www.emporia.com.ar
  #7 (permalink)  
Antiguo 15/01/2009, 05:32
Avatar de arielcasanova  
Fecha de Ingreso: octubre-2004
Ubicación: Bahía Blanca - Argentina
Mensajes: 332
Antigüedad: 20 años, 1 mes
Puntos: 1
Respuesta: ¿Cómo importo direcciones de correo desde un archivo, via php a mysql?

Excelente! Funcionó. Me quedó así:

Código PHP:
$texto file_get_contents($_FILES["userfile"]["tmp_name"],"r");

if (!empty(
$texto)) {
  
$variable preg_match_all(
    
"/[a-z0-9]+([_\\.-][a-z0-9]+)*@([a-z0-9]+([\.-][a-z0-9]+)*)+\\.[a-z]{2,}/i",
    
$texto,
    
$coincide
  
);

  if (
$variable) {
    foreach(
array_unique($coincide[0]) as $email) {

$ins="INSERT INTO me_contactos (id_usuario, id_grupo, correo) VALUES ('$id_usuario', '1', '$email')";
if (
mysql_query($ins))
{
$row++;
echo 
"$email ingresado<br/>";
}
}
}


muchas gracias por tu ayuda, amigo.
__________________
Ariel Casanova
diseño y desarrollo web estratégico
www.emporia.com.ar
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:07.