Re: [HS] aide expression régulière

トップ ページ

このメッセージに返信
著者: Marc TERRIER
日付:  
To: Marc BERLIOUX
CC: ML Guilde
題目: Re: [HS] aide expression régulière
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