[Devel] r238 - trunk
David MENTRE
dmentre at linux-france.org
Ven 2 Fév 09:08:41 CET 2007
Salut Thomas,
2007/2/1, svn at agendadulibre.org <svn at agendadulibre.org>:
> if (! ereg("^([A-Za-z0-9_\.\-]*)@([A-Za-z0-9_\-]*)\.([A-Za-z0-9_\.\-]*)$", $contact))
Tiens, j'avais jamais relu cette partie de code mais je suis quasiment
sur que tu peux avoir un `+' en partie gauche du @ (le nom de compte),
par exemple dmentre+adl at . C'est utilisé notamment pour faire des
filtres propres à l'utilisateur (tous les emails dmentre+machin vont
au compte dmentre).
Par ailleurs, dans les énumerations de caractères ([...]), tu peux ne
pas backquoter le tiret `-' si tu le mets en premier. Idem pour le
point `.', pas la peine de le backquoter. En tout cas, en Perl c'est
comme ça.
Je viens de vérifier, la page
http://fr.php.net/manual/fr/ref.regex.php dit qu'il faut suivre la
page de man de regex.7 qui dit notamment :
http://www.tin.org/bin/man.cgi?section=7&topic=regex
To include a literal `]' in the list, make it the first character (fol-
lowing a possible `^'). To include a literal `-', make it the first or
last character, or the second endpoint of a range. To use a literal
`-' as the first endpoint of a range, enclose it in `[.' and `.]' to
make it a collating element (see below). With the exception of these
and some combinations using `[' (see next paragraphs), all other spe-
cial characters, including `\', lose their special significance within
a bracket expression.
Donc, en particulier, ton `\.' match `\' *et* `.' !
Au final ça donnerait :
ereg("^([-A-Za-z0-9_+.]*)@([-A-Za-z0-9_]*)\.([-A-Za-z0-9_.]*)$", $contact))
Amicalement,
d.
Plus d'informations sur la liste de diffusion Devel