Existen varias maneras de determinar si una variable contiene una dirección de correo valida. Estas técnicas no verifican si la dirección de correo existe, sólo determinan si la cadena contenida en la variable respeta el formato de una dirección de correo.
I. Utilizando un filtro
Utilizando una función de la familia de filtros podemos verificar si una dirección de correo es valida. Por ejemplo
filter_var()
Ejemplo:
if(filter_var($email, FILTER_VALIDATE_EMAIL)){
//La dirección de correo es buena
}
II. Utilizando expresiones regulares
Utilizando expresiones regulares podemos verificar si una dirección de correo, ingresada por ejemplo mediante un formulario, es valida.
A continuación una función que verifica si una cadena de caracteres es una dirección de correo valida.
función VerificarrDireccionCorreo($direccion)
{
$Sintaxis='#^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,6}$#';
if(preg_match($Sintaxis,$direccion))
return true;
else
return false;
}
Ejemplo
Después de haber obtenido el campo “dirección” de un formulario:
$direccion=htmlentities($_POST['direccion']);
if(VerificarDireccionCorreo($direccion))
echo '<p>Tu direccion es valida.</p>';
else
echo '<p>Tu dirección e-mail no es valida.</p>';
Explicación
Las almohadillas (#) son los delimitadores de las expresiones regulares.
El símbolo ^ indica que la cadena debe comenzar con lo que sigue, y el símbolo $ indica que debe terminarse con lo que precede.
\w es una clase abreviada que corresponde a A-Za-z0-9_. O sea a las 26 letras del alfabeto en mayúsculas o minúsculas, las diez cifras y un underscore.
Lo que hace el código
^[\w.-]+@ Comienza (^)al menos con un carácter correspondiente a la clase abreviada, o un guión, luego es seguido por un @.
[\w.-]+ uno o más caracteres correspondientes a la clase abreviada o un guión (es el nombre de dominio)
\.[a-zA-Z]{2,6}$ un punto, luego de dos a seis letras, que terminan la cadena (es el tld del nombre de dominio).
PD: El
artículo original fue escrito por Jeff, contribuidor de
CommentCaMarche