Contrôle d'adresse email suivant version php4 php5

Contenu du snippet

<?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';
}
?>


Compatibilité : PHP 4, PHP 5

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.