Foros del Web » Programando para Internet » PHP »

discriminar mails

Estas en el tema de discriminar mails en el foro de PHP en Foros del Web. hola, soy medio nuevo en este tema de php...sucede lo siguiente tengo un archivo que en realidad en una pagina de un forware....o sea tien ...
  #1 (permalink)  
Antiguo 03/06/2005, 20:39
 
Fecha de Ingreso: junio-2005
Mensajes: 6
Antigüedad: 12 años, 6 meses
Puntos: 0
discriminar mails

hola, soy medio nuevo en este tema de php...sucede lo siguiente tengo un archivo que en realidad en una pagina de un forware....o sea tien mucha basura llamese :From: ....To: y entre medio de eso ay mails ke kiero sacar........el tema es que logro filtrar casi todo exepto cuando se produce una nueva linea ..el ultimo mail no me lo toma el codigo es el siguiente........(son 2) una class.....

comprobar_emails.php

<?php
// incluimos la clase
include ( "ValidadorEmail.php" );

// creamos un array con varios emails válidos y no válidos para el ejemplo
$filename = "c:\\for.txt";
$fd = fopen ($filename, "r");
$contents = fread ($fd, filesize ($filename));
fclose ($fd);
$emails = split( '[ ,>]', $contents );
// instanciamos la clase
$validar = new ValidadorEmail ();

// iteramos el array de emails para comprobar su validez
for ( $i=0 ; $i< sizeof($emails) ; ++$i )
{
// asignamos el email a comprobar
$validar->email = $emails[$i];
// comprobamos su validez mediante el método de comprobación
$retorno = $validar->comprobarEmail ();

if ( $retorno == false )
{
echo "<b><font type='Courier' color='red'>Email erróneo >> " . $emails[$i] . "</font></b><br>";
}
else
{
echo "<b><font type='Courier' color='green'>Email correcto >> " . $emails[$i] . "</font><b><br>";
}

}
?>

ValidadorEmail.php

<?php
class ValidadorEmail
{
/**
* variables miembro Públicas
*/
var $email; // dirección de email a comprobar (String)


/**
* variables miembro Privadas
*/
var $exp_reg; // expresión regular (String)



/**
* método públco comprobarEmail
* @parametros Ninguno
* @devuelve (Boolean)
*/

function comprobarEmail ()
{
$this->exp_reg = "^[[:alnum:]_-]+"; // equivale a "^[a-z0-9_-]+"
$this->exp_reg .= "(\.[[:alnum:]_-]+){0,}"; // equivale a "(\.[a-z0-9_-]+){0,}"
$this->exp_reg .= "@";
$this->exp_reg .= "[[:alnum:]_-]+"; // equivale a "[a-z0-9_-]+"
$this->exp_reg .= "(\.[[:alnum:]_-]+){0,}"; // equivale a "(\.[a-z0-9_-]+){0,}"
$this->exp_reg .= "(\.[[:alpha:]]{2,3})$"; // equivale a "(\.[a-z]{2,3})$"

if ( ereg ( $this->exp_reg , $this->email ) )
{
return (true);
}
else
{
return (false);
}

}
}
?>

calculo ke el tema viene por donde se genera el array con los mails y la basura....o sea el split ().....pero no puedo meter dentro de '[ ,>]' un \n por ke me lo toma como una \ y una n..........
Si alguien me pudiera dar una mano por favor........
Desde ya muchisimas gracias........saludos ..nos vemos ciao
  #2 (permalink)  
Antiguo 04/06/2005, 01:59
Avatar de otreblanc  
Fecha de Ingreso: mayo-2005
Ubicación: Chiapas, la última frontera...
Mensajes: 73
Antigüedad: 12 años, 6 meses
Puntos: 0
Hola!

Previamente a lo que haces, prueba eliminar los saltos de linea, asi:
Código PHP:
$emails preg_replace("/(\r\n|\n|\r)/"""$emails); 
Enjoy!
  #3 (permalink)  
Antiguo 04/06/2005, 15:44
 
Fecha de Ingreso: junio-2005
Mensajes: 6
Antigüedad: 12 años, 6 meses
Puntos: 0
GRACIAS !!!!! anduvo...con una pekeña modificacion........seria por EJ:
$email = preg_replace("/(\r\n|\n|\r)/", "", $contents);
$emails = split( '[ ,>]', $email );

an asi kedan un par de detallitos...pero ya casi esta........nada ke no se pueda solucionar con str_replace y con esta nueva ke no conocia "preg_replace"
Muchisimas gracias de nuevos.......nos vemos serte ciao
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 22:31.