La validation des courriels est un des problèmes les plus complexe à mettre en oeuvre lorsqu'on envoie un formulaire. Et pour cause, il faut tenir compte des règles suivantes :
- Un courriel doit contenir exactement un arobas (@),
- Le nom de domaine, situé après l'arobas (@) contient un point (.),
- Seul certains code de caractères sont acceptés.
A l'aide du code source PHP suivant, vous trouverez la réponse que vous souhaitez :
Essayer maintenant !
- <?php
- function BooleanToStr($X) {
- if($X) return "true";
- else return "false";
- }
-
- function IsEmail($Email) {
- if(($Email == null) || (strlen($Email) == 0)) return false;
- for($I = 0; $I < strlen($Email); $I++) {
- switch($Email[$I]) {
- case " ":case "\t":case "\n":case "\r":
- case "(":case ")":case ":":case ",":case "/":case "'":case "\"":
- case "~":case "`":case "!":case "#":case "$":case "%":case "^":
- case "&":case "*":case "+":case "=":case "[":case "]":case "{":
- case "}":case "|":case "\\":case "?":case "<":case ">":
- return false;
- }
- }
-
- for($ArobasFound = 0, $I = 1; $I < strlen($Email); $I++) if($Email[$I] == "@") {
- $ArobasFound++;
- if($ArobasFound == 1) $AfterArobas = $I;
- }
- if($ArobasFound!=1) return false;
- $AfterArobas += 2;
- while (($AfterArobas < strlen($Email)) && ($Email[$AfterArobas] != ".")) $AfterArobas++;
- if(($AfterArobas >= strlen($Email) - 1) || ($Email[$AfterArobas] != ".")) return false;
- else return true;
- }
-
- echo "Courriel «abc» est valide: ".BooleanToStr(IsEmail("abc"))."<BR>";
- echo "Courriel «@» est valide: ".BooleanToStr(IsEmail("@"))."<BR>";
- echo "Courriel «@abc.abc» est valide: ".BooleanToStr(IsEmail("@abc.abc"))."<BR>";
- echo "Courriel «abc@gladir.com» est valide: ".BooleanToStr(IsEmail("abc@gladir.com"))."<BR>";
- echo "Courriel «abc@@gladir.com» est valide: ".BooleanToStr(IsEmail("abc@@gladir.com"))."<BR>";
- echo "Courriel «abc@gl][adir.com» est valide: ".BooleanToStr(IsEmail("abc@gl][adir.com"))."<BR>";
- ?>
on obtiendra le résultat suivant :
Courriel «abc» est valide: falseCourriel «@» est valide: false
Courriel «@abc.abc» est valide: false
Courriel «abc@gladir.com» est valide: true
Courriel «abc@@gladir.com» est valide: false
Courriel «abc@gl][adir.com» est valide: false
Expression régulière
L'exemple suivant permet d'effectuer une recherche en utilisant une expression régulière. Elle est aussi plus restrictive au niveau des caractères accentués.
- <?php
- function BooleanToStr($X) {
- return $X?"true":"false";
- }
-
- function IsEmail($email) {
- return preg_match("/^([0-9a-zA-Z\@\-\.\_']+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i", $email);
- }
-
- echo "Courriel «abc» est valide: ".BooleanToStr(IsEmail("abc"))."<BR>";
- echo "Courriel «@» est valide: ".BooleanToStr(IsEmail("@"))."<BR>";
- echo "Courriel «@abc.abc» est valide: ".BooleanToStr(IsEmail("@abc.abc"))."<BR>";
- echo "Courriel «abc@gladir.com» est valide: ".BooleanToStr(IsEmail("abc@gladir.com"))."<BR>";
- echo "Courriel «abc@gléadir.com» est valide: ".BooleanToStr(IsEmail("abc@gléadir.com"))."<BR>";
- echo "Courriel «aébc@gladir.com» est valide: ".BooleanToStr(IsEmail("aébc@gladir.com"))."<BR>";
- echo "Courriel «abc@@gladir.com» est valide: ".BooleanToStr(IsEmail("abc@@gladir.com"))."<BR>";
- echo "Courriel «abc@gl][adir.com» est valide: ".BooleanToStr(IsEmail("abc@gl][adir.com"))."<BR>";
- echo "Courriel «abc@gl][adir.com» est valide: ".BooleanToStr(IsEmail("abc@gl][adir.com"))."<BR>";
- ?>
on obtiendra le résultat suivant :
Courriel «abc» est valide: falseCourriel «@» est valide: false
Courriel «@abc.abc» est valide: false
Courriel «abc@gladir.com» est valide: true
Courriel «abc@gléadir.com» est valide: false
Courriel «aébc@gladir.com» est valide: false
Courriel «abc@@gladir.com» est valide: true
Courriel «abc@gl][adir.com» est valide: false
Courriel «abc@gl][adir.com» est valide: false
Dernière mise à jour : Dimanche, le 5 avril 2015