Foros del Web » Programando para Internet » PHP »

Expresion regular...Validando email

Estas en el tema de Expresion regular...Validando email en el foro de PHP en Foros del Web. Compañeros(as) Antes que todo saludarlos y agradecer desde ya cualquier ayuda o sugerencia. Bueno encontre una funcion para validar el email, que para mi esta ...
  #1 (permalink)  
Antiguo 28/09/2007, 07:25
 
Fecha de Ingreso: marzo-2004
Ubicación: Chile
Mensajes: 382
Antigüedad: 20 años, 1 mes
Puntos: 0
Expresion regular...Validando email

Compañeros(as)

Antes que todo saludarlos y agradecer desde ya cualquier ayuda o sugerencia.

Bueno encontre una funcion para validar el email, que para mi esta muy buena, el caso es que esta funcion no me permite emial con este tipo de caracter _ y hay muchos usuarios que utilizan en sus correos tal caracter _ .
El problema que yo no soy muy experto en las expresiones regulares, me gustaria si alguien me puede ayudar a visualizr en donde debo modificar el codigo para que acepte el caracter _ .

Les dejo la funcion.

Código PHP:
function check_email_address($email
{
// Primero se comprueba que existe una @ y que las longitudes son correctas
    
if (!ereg("[^@]{1,64}@[^@]{1,255}"$email))
    { 
    
// Email inválido por un número incorrecto de carácteres o número incorrecto de @'s
        
return false;
    }
    
// Partimos el email en porciones, a partir de la @ y el .
    
$email_array explode("@"$email);
    
$local_array explode("."$email_array[0]);
    for (
$i 0$i sizeof($local_array); $i++) 
    {
        if (!
ereg("^(([A-Za-z0-9!#$%&'*+/=?^_`{|}~-][A-Za-z0-9!#$%&'*+/=?^`{|}~\.-]{0,63})|(\"[^(\\|\")]{0,62}\"))$"$local_array[$i]))
        {
        return 
false;
        }
    } 
    if (!
ereg("^\[?[0-9\.]+\]?$"$email_array[1])) 
    { 
        
// Comprobamos si el dominio es una IP
        
$domain_array explode("."$email_array[1]);
        if (
sizeof($domain_array) < 2
        {
            return 
false// Dominio con partes insuficientes
        
}
        for (
$i 0$i sizeof($domain_array); $i++) 
        {
            if (!
ereg("^(([A-Za-z0-9][A-Za-z0-9-]{0,61}[A-Za-z0-9])|([A-Za-z0-9]+))$"$domain_array[$i])) 
            {
                return 
false;
            }
        }
    }
    return 
true;

Bueno espero que me puedan ayudar, el tipo de email que no me acepta es de esta forma: [email protected].

Gracias Nuevamente
  #2 (permalink)  
Antiguo 28/09/2007, 07:29
Avatar de kaninox  
Fecha de Ingreso: septiembre-2005
Ubicación: In my House
Mensajes: 3.597
Antigüedad: 18 años, 7 meses
Puntos: 49
Re: Expresion regular...Validando email

en esta parte esta validando eso

if (!ereg("^(([A-Za-z0-9!#$%&'*+/=?^_`{|}~-][A-Za-z0-9!#$%&'*+/=?^`{|}~\.-]{0,63})|(\"[^(\\|\")]{0,62}\"))$", $local_array[$i]))

quitake ek _ despues del ^ y prueba
__________________
Gokuh Salvo al mundo. PUNTO!!!!
  #3 (permalink)  
Antiguo 28/09/2007, 07:41
 
Fecha de Ingreso: marzo-2004
Ubicación: Chile
Mensajes: 382
Antigüedad: 20 años, 1 mes
Puntos: 0
Re: Expresion regular...Validando email

Gracias por su respuesta compañero, pero no me funciono...la linea de codigo deberia haber quedado asi segun tu recomendacion.


Código PHP:
if (!ereg("^(([A-Za-z0-9!#$%&'*+/=?^`{|}~-][A-Za-z0-9!#$%&'*+/=?^`{|}~\.-]{0,63})|(\"[^(\\|\")]{0,62}\"))$"$local_array[$i])) 
quizas que sera..
  #4 (permalink)  
Antiguo 28/09/2007, 09:12
 
Fecha de Ingreso: marzo-2004
Ubicación: Chile
Mensajes: 382
Antigüedad: 20 años, 1 mes
Puntos: 0
Re: Expresion regular...Validando email

Compañeros(as)

Descubri que al poner la funcion tal cual esta osea de esta forma:

Código PHP:
if (!ereg("^(([A-Za-z0-9!#$%&'*+/=?^_`{|}~-][A-Za-z0-9!#$%&'*+/=?^
_`{|}~\.-]{0,63})|(\"[^(\\|\")]{0,62}\"))$"
$local_array[$i])) 
funciona perfectamente...sin ningun problema.

Lo que hice yo en mi codigo es dejar todo esto en una linea para eso hice suprimir y junte las dos lineas y quedaron como en el primer codigo que publique.

Mi pregunta es el caracter especial _ cumplia alguna funcion especifica dentro del codigo en php, osea unir la linea de arriba con la de abajo, seguramente.

Pero entonces como deberia unir esas dos lineas y dejarlas y en una, ya que para mi visualmente es mejor de entender el codigo y de la identacion, en fin....como se solucionaria esto.

Bueno gracias a todos...
  #5 (permalink)  
Antiguo 29/09/2007, 01:40
Avatar de kaninox  
Fecha de Ingreso: septiembre-2005
Ubicación: In my House
Mensajes: 3.597
Antigüedad: 18 años, 7 meses
Puntos: 49
Re: Expresion regular...Validando email

vas entonces pones

Código PHP:
if (!ereg("^(([A-Za-z0-9!#$%&'*+/=?^_`{|}~-][A-Za-z0-9!#$%&'*+/=?^""_`{|}~\.-]{0,63})|(\"[^(\\|\")]{0,62}\"))$"$local_array[$i])) 
:P
__________________
Gokuh Salvo al mundo. PUNTO!!!!
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 21:32.