Téléchargement
illégal

PHP - Vérifier le format d'une adresse mail

Il existe plusieurs manières de déterminer si une variable contient une adresse email valide. Ces techniques ne vérifient pas si l'adresse email existe bien mais elles déterminent si la chaine contenue dans une variable respecte bien le format d'une adresse email.


I) En utilisant un filtre


En utilisant une fonction de la famille des filtres, vous pouvez vérifier qu'une adresse email est valide.
Par exemple filter_var()
Exemple:
if(filter_var($email, FILTER_VALIDATE_EMAIL)){ 
    //L'email est bonne 
}

II) Grâce aux expressions régulières


Grâce aux expressions régulières, il est possible de vérifier si une adresse email, saisie par exemple via un formulaire, est valide.

Voici une fonction qui vérifie si une chaine de caractères est seulement une adresse e mail valide.
function VerifierAdresseMail($adresse) 
{ 
   $Syntaxe='#^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,6}$#'; 
   if(preg_match($Syntaxe,$adresse)) 
      return true; 
   else 
     return false; 
}

Exemple d'utilisation


Après avoir récupéré le champ "adresse" d'un formulaire :
$adresse=htmlentities($_POST['adresse']); 
if(VerifierAdresseMail($adresse)) 
  echo '<p>Votre adresse est valide.</p>'; 
else 
  echo '<p>Votre adresse e-mail n\'est pas valide.</p>';

Explications


Les dièses sont les délimiteurs de la regex.
Le signe ^ indique que la chaine doit commencer par ce qui suit, et le signe $ indique qu'elle doit se terminer par ce qui précède.
\w est une classe abrégée qui correspond a A-Za-z0-9_. soit aux 26 lettres de l'alphabet en majuscules ou minuscules, les dix chiffres et un underscore.

Ce que fait le code


^[\w.-]+@ Commence (^) par au moins un caractère correspondant à la classe abrégée, ou un tiret, puis est suivi par un@.
[\w.-]+ un ou plus de caractères correspondant à la classe abrégée ou un tiret (c'est le nom de domaine)
\.[a-zA-Z]{2,6}$ un point, puis deux à six lettres, qui finissent la chaine (c'est la tld du nom de domaine).
Publié par Jeff - Dernière mise à jour le 13 juillet 2010 à 16:07 par DJ Fire-Black
Ce document intitulé « PHP - Vérifier le format d'une adresse mail » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Suggestions
  •  PHP - Vérifier le format d'une adresse mail
  •  PHP - Vérifier le domaine d'une adresse mail » Fiches pratiques : Dans une adresse email, on trouve deux parties: utilisateur@domaine La partie domaine définit un ensemble de machines associées dans lequel on trouvera généralement un serveur qui permet d'envoyer des mails. Dans ce domaine il y a des utilisateurs....
  •  Vérifier le format d'une date en PHP » Fiches pratiques : Il existe plusieurs méthodes pour verifier le format d'une date en PHP, vous pouvez par exemple découper la chaîne puis tester les valeurs de chaque élément. Plus simplement nous utiliserons les expressions régulières. Pour valider une date au...
  •  Tester si une adresse email existe ou nom (Résolu) » Meilleure réponse: essaye par là j'ai essayé et ça marche http://sites.google.com/site/meilleursoutilsgratuits/tester-une-adresse-mail
  •  Verifier l' email dans un formulaire (Résolu) » Meilleure réponse: Une fonction simple pour tester la validité d'un adresse mail en javascript... Moins compliquée que celle de Kharma, mais largement suffisante à mon avis... Voici un code beaucoup plus efficace à mon avis : function bonmail(mailteste) {
  •  Trouver le pays ou ville d'une adresse email » Meilleure réponse: on m'a dit qu'il etait possible de trouver le pays ou la ville d'ou parte les message correspondand a l'adresse email en decodant l'IP connaisser vous la manip Regarde dans les entêtes de l'email: en principe il y a l'adresse IP de celu
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?
PHP - Date de dernière modification
PHP - Parse error, unexpected T_STRING, expecting ',' or ';'