Marc BERLIOUX a écrit :
[...]
> // Split it into sections to make life easier
> $email_array = explode("@", $email);
> $local_array = explode(".", $email_array[0]);
> for ($i = 0; $i < sizeof($local_array); $i++) {
> if
> (!ereg("^(([A-Za-z0-9!#$%&'*+/=?^_`{|}~-][A-Za-z0-9!#$%&'*+/=?^_`{|}~\.-]{0,63})|(\"[^(\\|\")]{0,62}\"))$",
> $local_array[$i])) {
> return false;
> }
> }
Bonjour Marc,
Il y a quelque chose qui me choque dans l'expression régulière ci-dessus :
^(([A-Za-z0-9!#$%&'*+/=?^_`{|}~-][A-Za-z0-9!#$%&'*+/=?^_`{|}~\.-]{0,63})|(\"[^(\\|\")]{0,62}\"))$
^^
Tu ne dois normalement pas avoir de '.' dans les éléments du tableau local_array, qui proviennent d'un explode avec le caractère '.' pris comme délimiteur.
> [...] elle refuse encore les adresses comme
>
> "Abc@???, "Fred Bloggs"@???, "Joe.\\Blow"@???
"Abc@??? : c'est normal que ce soit rejeté, parce que la vérification du nombre d'@ ne tient pas compte des éventuels guillemets, qui ne sont pris en compte qu'un peu plus loin.
> mais elle accepte !#$%&'*+-/=?^_`.{|}~@example.com
> net progrès !
Super, en effet, comme adresse e-mail ! :-)
> une chose me tracasse aussi, c'est qu'il me semblait qu'on avait droit
> dans un nom de domaine qu'à un seul '.' et que celui de l'@ de notre
> liste <guilde@???> en comporte 2
Non, pas du tout : je connais plusieurs personnes qui ont plusieurs '.' dans leurs adresses mail, et ça marche très bien.
> c'est un boulot à plein temps de vérifier des @ mail !
En tout cas, une chose est sûre, c'est plus compliqué qu'on pourrait le penser de prime abord.
Cordialement,
--
Marc