Page 1 sur 1
Vérification qu'un champ ne contient pas d'email
Posté : 19 déc. 2008, 18:29
par dmx-moteur
Je souhaiterais verifier qu'un textarea de formulaire ne contient pas d'email... Il peut contenir n'importe quelle lettre ou chiffre mais pas de "@". Comment faire avec les regexp ?
Posté : 19 déc. 2008, 18:36
par guilt92
Bonjour,
Si tu veux juste éviter l'@ il te suffit par exemple d'utiliser strpos() ... Si ca renvoi quelque chose différent de false ca veut dire que le textarea contient un @...
Apres avec les regexp tu pourrais tester quelque chose de plus complexe genre
[email protected] mais si l'@ te suffit c'est pas la peine... Tu peux trouver le pattern sur google avec des mots cles genre "verification email expression regulieres" et faire l'inverse après...
Posté : 20 déc. 2008, 11:38
par stopher
Salut ,
Pour tester la présence d'adresse mail , utilise preg_match() avec cette expression :
Code : Tout sélectionner
[a-z0-9_\-]+(\.[_a-z0-9\-]+)*@([_a-z0-9\-]+\.)+([a-z]{2}|aero|arpa|biz|com|coop|edu|gov|info|int|jobs|mil|museum|name|nato|net|org|pro|travel)
Cette fonction va te retourner le nombre d'adresses mail retrouvé dans le champ testé ...
Posté : 20 déc. 2008, 23:04
par niuxe
Salut,
Exact, un
strpos() suffit amplement. Néanmoins, si tu veux éviter les méandre d'une REGEX pour une adresse email complète, je peux te conseiller d'utiliser les filtres variables :
filter_vars().
++
Posté : 21 déc. 2008, 15:31
par AB
Bonjour,
Effectivement, s'il s'agissait de vérifier le bon formatage d'une adresse mail je conseillerais plutôt filter_var qui est plus simple à utiliser et qui prendra moins de ressources qu'une expression régulière. A compléter éventuellement par checkdnsrr().
Maintenant dans le problème mentionné ci-dessus, il va de soit que strpos() est le plus simple et le plus rapide. Quand des solutions aussi simples et efficaces existent, pas la peine de s'en priver

Posté : 24 déc. 2008, 11:56
par dmx-moteur
Merci à tous de vos réponses et de votre aide mais je dois absolument utiliser les regexp...
J'ai donc trouvé la solution suivante : [^@]*
Posté : 24 déc. 2008, 12:00
par stopher
Si tu dois utiliser les regexp,
celle ci n'est pas bonne
Utilises celle que je t'ai donné :
Code : Tout sélectionner
[a-z0-9_\-]+(\.[_a-z0-9\-]+)*@([_a-z0-9\-]+\.)+([a-z]{2}|aero|arpa|biz|com|coop|edu|gov|info|int|jobs|mil|museum|name|nato|net|org|pro|travel)
Sinon , tu vas valider des mails invalides ...
Posté : 24 déc. 2008, 12:01
par guilt92
Je pense que son but n'est pas de valider des email mais de supprimer tout ce qui y ressemble, donc il peut se contenter du minimum

Posté : 24 déc. 2008, 15:36
par dmx-moteur
Oui, effectivement, je ne veux pas valider la structure d'un e-mail mais éviter que des personnes saisissent dans le mauvais champ un e-mail (ce qui arrive fréquemment sur le formulaire de mon site...)