Función en PHP para comprobar si un email es válido – Explicación
Algunos me habéis pedido que os explique cómo funciona el sencillo script que publiqué el otro día:
if (ereg("([A-Za-z0-9_.-]+@[A-Za-z0-9_.-]+\.[A-Za-z0-9_-]+)", $email, $resultado)) { echo $resultado[1]; }
Pues vamos a analizarlo un poco.
La función ereg analiza la cadena $email, buscando si hay texto que se ajuste al patrón:
"[A-Za-z0-9_.-]+@[A-Za-z0-9_.-]+\.[A-Za-z0-9_-]+"y almacene el resultado en el array $resultado.
El patrón parece algo críptico pero es bastante sencillo:
[A-Za-z0-9_.-] : sirve para indicar que buscamos un texto que contenga las letras de la ‘A’ a la ‘Z’, de la ‘a’ a la ‘z’, dígitos entre 0 y 9 y los símbolos ‘_’, ‘.’ y ‘-’.
El símbolo + a continuación indica que pueden ser uno o más caracteres.
Un email suele estar compuesto de las siguientes partes:
usuario@subdomino1.subdominio2.dominio.extensión
(no son los nombres correctos pero los pongo así para entendernos).
con el patrón que hemos usado quedaría algo así:
usuario: [A-Za-z0-9_.-]+ @: @ [A-Za-z0-9_\.-]+: subdomino1.subdominio2.dominio .extensión: \.[A-Za-z0-9_-]+
Nótese que la extensión no admite ningún ‘.’.
Actualización: He corregido un pequeño un error en el patrón que hacía que aceptase emails con una barra invertida, como por ejemplo:
pa\co@email.com



Junio 24th, 2008 at 8:15 am
Me ah servido mucho esta explicacion gracias, saludos desde argentina….
Enero 20th, 2009 at 6:34 am
Me gustaria saber si sabes como hacer para que el formulario envie un correo al usuario y le pida que autentifique que el pidio el registro en dicho lugar y que luego de verificado (usualmente mediante un link) el registro, entonces le envie un mail al usuario con los datos ingresado y que su registro fue un exito.
Quiero hacerlo en flash, pero si sabes la funcion en php luego puedo averiguar como adaptarlo para que funcione con flash.
Muchas gracias.