<?php
function testRegex($this){
if(!preg_match(
'/^(?!(?:(?:\x22?\x5C[\x00-\x7E]\x22?)|(?:\x22?[^\x5C\x22]\x22?)){255,})(?!(?:(?:\x22?\x5C[\x00-\x7E]\x22?)|(?:\x22?[^\x5C\x22]\x22?)){65,}@)(?:(?:[\x21\x23-\x27\x2A\x2B\x2D\x2F-\x39\x3D\x3F\x5E-\x7E]+)|(?:\x22(?:[\x01-\x08\x0B\x0C\x0E-\x1F\x21\x23-\x5B\x5D-\x7F]|(?:\x5C[\x00-\x7F]))*\x22))(?:\.(?:(?:[\x21\x23-\x27\x2A\x2B\x2D\x2F-\x39\x3D\x3F\x5E-\x7E]+)|(?:\x22(?:[\x01-\x08\x0B\x0C\x0E-\x1F\x21\x23-\x5B\x5D-\x7F]|(?:\x5C[\x00-\x7F]))*\x22)))*@(?:(?:(?!.*[^.]{64,})(?:(?:(?:xn--)?[a-z0-9]+(?:-[a-z0-9]+)*\.){1,126}){1,}(?:(?:[a-z][a-z0-9]*)|(?:(?:xn--)[a-z0-9]+))(?:-[a-z0-9]+)*)|(?:\[(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){7})|(?:(?!(?:.*[a-f0-9][:\]]){7,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?)))|(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){5}:)|(?:(?!(?:.*[a-f0-9]:){5,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3}:)?)))?(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))(?:\.(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))){3}))\]))$/iD'
, $this)){
return false;
}else{
return true;
}
}
function verifMail($mail){
$mail=strtolower($mail);
$mail=str_replace("\"","",$mail);
If (strlen($mail)>50){
return false;
}
/*extraction du suffixe*/
$ok = ereg("^(.+)\.(.+)$", $mail, $items);
if($ok){
$sans_suffixe=$items[1] ;
$suffixe=$items[2];
//echo "Le nom de fichier '$mail' se compose de <b>$sans_suffixe</b> et de l'extension <b>$suffixe</b><br>" ;
}else{
exit('fake');
}
$ext =array('com','fr','net','org','eu');
if(!in_array($suffixe,$ext,true)){
return false;
}
$version=(double)substr(phpversion(),0,3);
if($version>=5.2){
if(!filter_var($mail, FILTER_VALIDATE_EMAIL)){
return false;
//echo 'Erreur : Votre email n\'est pas valide.';
}else if(!preg_match(
'/^(?!(?:(?:\x22?\x5C[\x00-\x7E]\x22?)|(?:\x22?[^\x5C\x22]\x22?)){255,})(?!(?:(?:\x22?\x5C[\x00-\x7E]\x22?)|(?:\x22?[^\x5C\x22]\x22?)){65,}@)(?:(?:[\x21\x23-\x27\x2A\x2B\x2D\x2F-\x39\x3D\x3F\x5E-\x7E]+)|(?:\x22(?:[\x01-\x08\x0B\x0C\x0E-\x1F\x21\x23-\x5B\x5D-\x7F]|(?:\x5C[\x00-\x7F]))*\x22))(?:\.(?:(?:[\x21\x23-\x27\x2A\x2B\x2D\x2F-\x39\x3D\x3F\x5E-\x7E]+)|(?:\x22(?:[\x01-\x08\x0B\x0C\x0E-\x1F\x21\x23-\x5B\x5D-\x7F]|(?:\x5C[\x00-\x7F]))*\x22)))*@(?:(?:(?!.*[^.]{64,})(?:(?:(?:xn--)?[a-z0-9]+(?:-[a-z0-9]+)*\.){1,126}){1,}(?:(?:[a-z][a-z0-9]*)|(?:(?:xn--)[a-z0-9]+))(?:-[a-z0-9]+)*)|(?:\[(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){7})|(?:(?!(?:.*[a-f0-9][:\]]){7,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?)))|(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){5}:)|(?:(?!(?:.*[a-f0-9]:){5,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3}:)?)))?(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))(?:\.(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))){3}))\]))$/iD'
, $mail)){
return false;
}
/*
'/^(([^<>()[\]\\.,;:\s@"\']+(\.[^<>()[\]\\.,;:\s@"\']+)*)|("[^"\']+"))@((\[\d' .
'{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\])|(([a-zA-Z\d\-]+\.)+[a-zA-Z]{2,}))$/', $mail
*/
else{
return true;
//echo 'Ok : Votre email est valide.';
}
}elseif($version>=4){
/*ancien php4*/
if(preg_match(
'/^(([^<>()[\]\\.,;:\s@"\']+(\.[^<>()[\]\\.,;:\s@"\']+)*)|("[^"\']+"))@((\[\d' .
'{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\])|(([a-zA-Z\d\-]+\.)+[a-zA-Z]{2,}))$/', $mail
)){
return true;
}else{
return false;
}
}else{
return false;
exit('PHP < 4 upgrade ... ');
}
}
$test = array(
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ@letters-in-local.org',
'01234567890@numbers-in-local.net',
'&\'*+-./=?^_{}~@other-valid-characters-in-local.net',
'mixed-1234-in-{+^}-local@sld.net',
'a@single-character-in-local.org',
'"quoted"@sld.com',
'"\e\s\c\a\p\e\d"@sld.com',
'"quoted-at-sign@sld.org"@sld.com',
'"escaped\"quote"@sld.com',
'"back\slash"@sld.com',
'single-character-in-sld@x.org',
'local@dash-in-sld.com',
'letters-in-sld@123.com',
'uncommon-tld@sld.museum',
'uncommon-tld@sld.travel',
'uncommon-tld@sld.mobi',
'country-code-tld@sld.uk',
'country-code-tld@sld.rw',
'local@sld.newTLD',
'numbers-in-tld@sld.xn--3e0b707e',
'local@sub.domains.com',
'bracketed-IP-instead-of-domain@[127.0.0.1]',
'@missing-local.org',
'! #$%(),:;<>@[]\`|@invalid-characters-in-local.org',
'.local-starts-with-dot@sld.com',
'local-ends-with-dot.@sld.com',
'two..consecutive-dots@sld.com',
'partially."quoted"@sld.com valid',
'the-local-part-is-invalid-if-it-is-longer-than-sixty-four-characters@sld.net',
'missing-sld@.com',
'sld-starts-with-dashsh@-sld.com',
'sld-ends-with-dash@sld-.com',
'invalid-characters-in-sld@! "#$%(),/;<>_[]`|.org',
'local@second-level-domains-are-invalid-if-they-are-longer-than-sixty-three-characters.org',
'missing-dot-before-tld@com',
'missing-tld@sld.',
' invalid',
'missing-at-sign.net',
'unbracketed-IP@127.0.0.1',
'invalid-ip@127.0.0.1.26',
'another-invalid-ip@127.0.0.256',
'IP-and-port@127.0.0.1:25'
);
/*test de la regex*/
foreach($test as $v){
testRegex($v);
if(!testRegex($v)){
echo $v.'<font color="red"> MAUVAIS FORMAT E-MAIL.</font><br />';
}else{
echo $v.'<font color="red"> BON FORMAT E-MAIL.</font><br />';
}
}
echo '<hr>';
/*faire vos tests ...*/
$t=$_POST['email']="sarkofage@orange.fr";
if(verifMail($_POST['email'])){
echo $t.' bon mail';
}else{
echo $t.' pas bon mail';
}
?>