Función en PHP para comprobar si un email es válido
Enero 25th, 2008 Posted in php
Hoy he tenido que preparar una pequeña función en PHP para que compruebe si los emails son válidos. Está hecha usando expresiones regulares:
1 2 3 4 | if (ereg("([A-Za-z0-9_.-]+@[A-Za-z0-9_.-]+\.[A-Za-z0-9_-]+)", $email, $resultado)) { echo $resultado[1]; } |
Este sencillo script sólo admitirá emails que contengan letras y números, guiones y puntos, por ejemplo:
paco@email.com paco.smith@email.com paco.smith@mi.email.com paco_smith@mi-email.com
y no admitirá emails con espacios o caracteres “extraños”.
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



Mayo 14th, 2009 at 11:43 pm
Hola. Lo que quería comprobar es que hay algunos formularios en los que se verifica que la dirección realmente exista, pero en otros como éste, solo se basan en patrones: que tenga arroba, dominio, punto, pero la dirección puede no existir.
Mayo 15th, 2009 at 12:07 am
Este ejemplo era precisamente para eso, para verificar si el email tiene un formato válido. Comprobar que el email existe realmente es algo más complicado; más o menos la idea sería hacer que nuestro script conecte con el servidor destino con nslookup para buscar información del servidor de correo. Luego, mediante telnet enviaríamos un comando para comprobar si existe. Tienes aquí esto bastante más detallado:
http://www.webdigi.co.uk/blog/2009/how-to-check-if-an-email-address-exists-without-sending-an-email/
Tiene algunos inconvenientes, como que el servidor puede aceptar todos los emails como válidos y luego generar un email de rebote para los que no existen.
Aquí tienes un script en Python para automatizar el proceso:
http://gist.github.com/47987
Mayo 15th, 2009 at 12:10 am
Por cierto, a partir de PHP 5.2.0 se puede comprobar si un email es válido usando:
filter_var(’roberto@example.com’, FILTER_VALIDATE_EMAIL);
Ver más información aquí:
http://es2.php.net/manual/es/function.filter-var.php
Agosto 22nd, 2009 at 12:45 am
quiero que hablemos