Vérification qu'un champ ne contient pas d'email

Eléphant du PHP | 95 Messages

19 déc. 2008, 18:29

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 ?
Je veux apprendre !!

Mammouth du PHP | 1353 Messages

19 déc. 2008, 18:36

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...
Tell me and I forget. Teach me and I remember. Involve me and I learn.

ViPHP
ViPHP | 1136 Messages

20 déc. 2008, 11:38

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é ...

Eléphant du PHP | 453 Messages

20 déc. 2008, 23:04

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().

++

ViPHP
AB
ViPHP | 5818 Messages

21 déc. 2008, 15:31

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 :wink:

Eléphant du PHP | 95 Messages

24 déc. 2008, 11:56

Merci à tous de vos réponses et de votre aide mais je dois absolument utiliser les regexp...

J'ai donc trouvé la solution suivante : [^@]*
Je veux apprendre !!

ViPHP
ViPHP | 1136 Messages

24 déc. 2008, 12:00

Si tu dois utiliser les regexp,

celle ci n'est pas bonne

Code : Tout sélectionner

[^@]*
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 ...

Mammouth du PHP | 1353 Messages

24 déc. 2008, 12:01

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 ;)
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Eléphant du PHP | 95 Messages

24 déc. 2008, 15:36

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...)
Je veux apprendre !!