Validando un Email con PHP usando filter_var()
Desde la salida de PHP 5.2.0, la extensión de filtros fué habilitada por defecto, y rápidamente se convirtió en una favorita entre los programadores de PHP.
Sin embargo, el filtro para validar emails no era 100% efectivo, ya que no tomaba en cuenta algunos detalles; por ejemplo, filter_var('john@lennon', FILTER_VALIDATE_EMAIL) tomaba como válido el email, a pesar de carecer del “.com”.
¿Cómo corregir esto? En The Electric Box encontraron una solución bastante simple y concreta: usar las maravillosas expresiones regulares.
Usaremos una función que encapsule la validación de emails:
function validarEmail($email) { return filter_var($email, FILTER_VALIDATE_EMAIL) && preg_match('/@.+\./', $email); } |
Para probar su funcionamiento, aquí algunos ejemplos de uso:
echo (int) validarEmail('john@lennon'); // 0 echo (int) validarEmail('john@lennon.'); // 0 echo (int) validarEmail('john@lennon.com'); // 1 echo (int) validarEmail('john@lennon.com.'); // 0 echo (int) validarEmail('john@lennon@beatles.com'); // 0 echo (int) validarEmail('john#lennon.com'); // 0 echo (int) validarEmail('john@lennon.beatles.com'); // 1 |
En el ejemplo anterior se utilizó cast (int) para convertir a entero el booleano devuelto por la función, ergo, 0 = false = email inválido, 1 = true = email válido.
Sencillo, ¿verdad? ¡Comentarios bienvenidos!



