Validar email en PHP

PHP

Existen varias formas de validar un email en PHP.

1. filter_var

Con la función filter_var de PHP podremos comprobar si un string es un email válido.

if (filter_var("any@testdomain.com", FILTER_VALIDATE_EMAIL)) {
    echo 'Valid email';
}else{
    echo 'Invalid email';
}

2. Expresión regular

La segunda forma de comprobar si un email es válido en PHP es utilizando una expresión regular.

$matches = null;
if(1 === preg_match('/^[A-z0-9\\._-]+@[A-z0-9][A-z0-9-]*(\\.[A-z0-9_-]+)*\\.([A-z]{2,6})$/', "any@testdomain.com", $matches)){
    echo 'Valid email';
}else{
    echo 'Invalid email';
}

3. Comprobando dominio

Este método no es 100% fiable, pero es una forma de comprobar si el dominio existe y si tiene un registro DNS de tipo MX (mail exchange). De las tres opciones, esta es la que más recursos consumiría.

function is_valid_email($email){
	$result = (false !== filter_var($email, FILTER_VALIDATE_EMAIL));

	if ($result){
		$domain = explode("@", $email)[1];
		$result = checkdnsrr($domain, 'MX');
	}

	return $result;
}


if(is_valid_email("any@testdomain.com")){
	echo 'Valid email';
}else{
	echo 'Invalid email';
}

4. Verificación por el usuario

Este método es el más efectivo, y al mismo tiempo, el más complejo de implementar. Se trata de enviar un email a esta dirección con un link y que el usuario tenga que clicar en ese enlace.

Resumen

En resumen, la mejor forma de comprobar un email de forma simple sería utilizar una combinación de la opción de filter_var y registro MX y 3 o la comprobación de expresión regular y del registro MX.

Sólo en caso de necesitar una verifiación 100% sería recomendable utilizar la opción 4, de verificación por parte del usuario.

Escribe una respuesta