Validando un Email con PHP usando filter_var()

Friday 23 de July de 2010, 10:03 am 1 Comment

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!

Share

Post tags