|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre éprouvé
![]() Inscription : mai 2006 Messages : 694 ![]() |
Bonjour,
Je teste sous PHP les expressions régulières pour valider l'e-mail d'un formulaire avec le code suivant : Code :
Une adresse du genre 'nom prenom @isp.com' passe au travers alors qu'elle ne devrait pas (je ne dis nulle part que l'espace est autorisé!). J'ai testé l'expression avec regex coach et là ça ne passe pas! Est-ce une légère défaillance de PHP? Comment empêcher ce comportement? Merci! webrider |
||
|
|
00
|
|
|
#2 |
|
Membre chevronné
![]() Ingénieur systèmes et réseaux Inscription : juillet 2006 Messages : 836 ![]() |
Moi j'ai codé mon eregi comme cela :
Code :
^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,3}$ Voila si ca peut t'aider
__________________
Dire Straits, Bob Dylan, Led Zeppelin, the Who, Pink Floyd, AC/DC, Guns & Roses, the Doors, ... |
|
|
00
|
|
|
#3 |
|
Membre éprouvé
![]() Inscription : mai 2006 Messages : 694 ![]() |
Merci Elwyn ça me dépanne mais ça ne me dit pas pourquoi ces e-mails passent à travers mon expression? Ce serait sympa de le savoir au cas où j'aurais besoin de tester d'autres champs.
En y pensant j'ai déjà un autre champ à tester : l'identifiant que je voudrais sans espace mais _ . et - sont acceptés. Code :
if (!eregi ("[a-zA-Z0-9_\.-]+", $_POST[login])) Merci! webrider |
|
|
00
|
|
|
#4 |
|
Membre chevronné
![]() Inscription : mai 2005 Messages : 657 ![]() |
Salut,
N'oublie pas les caractères ^ et $ respectivement en début et fin d'expression régulière Je pense que ton problème viens de là, par exemple pour l'adresse email, nom prenom@isp.com est validé car prenom@isp.com correspond au masque, donc ereg() retourne vrai car elle trouve une occurence du masque. |
|
|
00
|
|
|
#5 |
![]() ![]() Guillaume RossoliniDirecteur technique Inscription : février 2004 Messages : 13 720 ![]() |
Salut
1- La réponse est dans la FAQ 2- Les ereg() sont tellement obsolètes que PHP6 ne les proposera même plus en standard, il faut utiliser les preg maintenant 3- Il y a un super tuto à ce sujet : Initiation aux expressions régulières en PHP
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework) Ressources PHP - Ressources Zend Framework |
|
|
00
|
|
|
#6 |
|
Membre éprouvé
![]() Inscription : mai 2006 Messages : 694 ![]() |
Merci à vous deux pour vos réponses.
J'ignorais que les expressions régulières seraient complètement obsolètes dans la prochaine version de PHP, content de l'apprendre : je ne les utiliserai plus par souci de portabilité. Je vais aussi essayer la proposition de Taum en attendant de parcourir complètement le tuto de Yogui! Bonne soirée à toutes et tous, webrider |
|
|
00
|
|
|
#7 |
![]() ![]() Guillaume RossoliniDirecteur technique Inscription : février 2004 Messages : 13 720 ![]() |
Non lol, tu m'as mal compris : les expressions régulières POSIX sont obsolètes mais pas les expressions régulières compatibles Perl (PCRE) !
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework) Ressources PHP - Ressources Zend Framework |
|
|
00
|
|
|
#8 |
|
Membre éprouvé
![]() Inscription : mai 2006 Messages : 694 ![]() |
Ben ouais j'ai complètement déformé tes propos hier soir, à croire que j'étais dans le cirage!
@++ webrider |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com