Hello

Voici la fonction que j'utilise pour contrôler une adresse email...

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?
function controle_syntaxe_email($email)
{
	$tableau_tld = array(
	"arpa","edu","gov","int","mil","biz","com","info","name","net","org","pro","ac","ad",
	"ae","af","ag","ai","al","am","an","ao","aq","ar","as","at","au","aw","ax","az","ba",
	"bb","bd","be","bf","bg","bh","bi","bj","bm","bn","bo","br","bs","bt","bw","by","bz",
	"ca","cc","cd","cf","cg","ch","ci","ck","cl","cm","cn","co","cr","cu","cv","cx","cy",
	"cz","de","dj","dk","dm","do","dz","ec","ee","eg","er","es","et","eu","fi","fj","fk",
	"fm","fo","fr","ga","gd","ge","gf","gg","gh","gi","gl","gm","gn","gp","gq","gr","gs",
	"gt","gu","gw","gy","hk","hm","hn","hr","ht","hu","id","ie","il","im","in","io","iq",
	"ir","is","it","je","jm","jo","jp","ke","kg","kh","ki","km","kn","kp","kr","kw","ky",
	"kz","la","lb","lc","li","lk","lr","ls","lt","lu","lv","ly","ma","mc","me","md","mg",
	"mh","mk","ml","mm","mn","mo","mp","mq","mr","ms","mt","mu","mv","mw","mx","my","mz",
	"na","nc","ne","nf","ng","ni","nl","no","np","nr","nu","nz","om","pa","pe","pf","pg",
	"ph","pk","pl","pn","pr","ps","pt","pw","py","qa","re","ro","rs","ru","rw","sa","sb",
	"sc","sd","se","sg","sh","si","sk","sl","sm","sn","sr","st","sv","sy","sz","tc","td",
	"tf","tg","th","tj","tk","tl","tm","tn","to","tr","tt","tv","tw","tz","ua","ug","uk",
	"us","uy","uz","va","vc","ve","vg","vi","vn","vu","wf","ws","ye","za","zm","zw"
					);
 
	if (eregi("^[_\.0-9a-zA-Z\-]+@([0-9a-zA-Z][0-9a-zA-Z.-]+)\.([a-zA-Z]{2,6})$",$email, $extraction_modele))
	{
		foreach($tableau_tld as $tld)
		{
			if((strlen($extraction_modele[2])==strlen($tld)) && eregi($tld,$extraction_modele[2]))
				return TRUE;
		}
 
		return FALSE;
	}
	else
		return FALSE;
}
?>

Celle-ci a déjà fait ses preuves, mais voilà qu'un cas de figure m'étonne:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
<?
$email = "\truc@domaine.fr";
 
if(controle_syntaxe_email($email))
	echo "email valide";
else
	echo "email invalide";
?>
L'exécution de ce code retourne "email valide".

Comment expliquer que le caractère d'échappement "\" arrive à passer mes restrictions au niveau de l'expression régulière ?

merci d'avance !