Vérifier un format d'adresse e-mail par regex - Apprendre-PHP.com

Rechercher
Boutique en ligne, solution e-commerce, script PHP et PERL : RAYNETTE

Vérifier un format d'adresse e-mail par regex

ElePHPant El-Roubio

Il n'est pas rare d'avoir à manipuler des adresses e-mails sur Internet. Le premier besoin que l'on rencontre avec ces données est de pouvoir valider leur format. C'est à dire de vérifier qu'elles soient conformes à un motif particulier. Un moyen d'y arriver est d'avoir recours aux expressions régulières particulièrement puissantes et évoluées en PHP. La fonction qui va suivre a été réalisée à partir d'une regex d'Yves Maistriaux, webmaster du site Expreg.com et référence francophone dans ce domaine.

Portion de code

Fonction de vérification d'une adresse e-mail
<?php
/*******************************************************
* Déclaration de la fonction
*******************************************************/
/**
* La fonction vérifie le format d'une adresse e-mail au moyen
* d'une expression régulière.
*
* @author : Hugo HAMON
* @copyright : Yves Maistriaud (Expreg.com)
* @param : string $sEmail le format d'adresse email à tester
* @return : boolean $bCorrect
*/
function verifierAdresseEmail($sEmail)
{
// Variables locales
$sMotif = '`^[[:alnum:]]([-_.]?[[:alnum:]])*@[[:alnum:]]([-.]?[[:alnum:]])*\.([a-z]{2,4})$`';
$bCorrect = false;
// Test du format de l'email
if(preg_match($sMotif,$sEmail))
{
$bCorrect = true;
}
// Renvoi du booléen
return $bCorrect;
}
/*******************************************************
* Exemple d'appel de la fonction
*******************************************************/
if(verifierAdresseEmail('toto.root@mon-serveur.com'))
{
echo 'Cette adresse e-mail est correcte !';
}
else
{
echo 'Cette adresse e-mail est fausse !';
}
?>

Les commentaires

1. Par Mickaël Wolff le lundi 19 novembre 2007 à 11:11

Ta Regex est fausse, elle ne respecte pas les RFC qui vont bien.

"Toto Tartare"@lupusmic.org et Toto+Tartare@lupusmic.org sont des courriels valides par exemple.

http://lupusmic.org/pro/docs/regex.php
http://faqfclphp.free.fr/#rub5.3

2. Par j.ducastel le lundi 03 décembre 2007 à 09:09

...Et accessoirement ta fonction renvoie toujours false Emoticone envieux

P.S. Pourquoi l'envoi de commentaire en ajax ? Parce que ça ne fonctionne pas sous opera par exemple...

3. Par Emacs le lundi 03 décembre 2007 à 21:09

Ah mince effectivement... Satané copié / collé Emoticone très content

Merci pour la correction Emoticone clin d'oeil

4. Par Francis le mardi 29 janvier 2008 à 09:09

Ta fonction vérifie uniquement si l'occurence à une syntaxe correcte.
Il serait intéressant d'y ajouter la fonction checkdnsrr() pour vérifier si le MX est existant ou pas.

Ajouter un commentaire

Votre avis
Se souvenir de mes informations