[PHP] ereg et pattern

ereg et pattern [PHP] - PHP - Programmation

Marsh Posté le 20-03-2004 à 23:52:13    

Salut tout le monde, je viens de chercher la syntaxe du pattern pour ereg() pour vérifier un email entré, j'ai trouvé çà:
 

Code :
  1. if (ereg("^([A-Za-z0-9_\.]*)@([A-Za-z_]*)\.([A-Za-z_\.]*)$", $string)) {
  2.    print "valid";
  3. } else {
  4.    print "invalid";
  5. }


 
mais je ne comprend pas le '^', le '$', les '*' et le '\' dans le premier argument...
 
A quoi ils servent?

Reply

Marsh Posté le 20-03-2004 à 23:52:13   

Reply

Marsh Posté le 21-03-2004 à 00:00:16    

'^' : indique le début de la chaine  
 
'$' : indique la fin de la chaîne a matcher
 
'*'  : zéro occurence ou +
'\' : caractère déchappement car le . est résérvé  (caractère unique )

Reply

Marsh Posté le 21-03-2004 à 00:14:13    

ok merci beaucoup!!

Reply

Marsh Posté le 21-03-2004 à 01:28:16    

preg c'est quand même mieux :o

Reply

Marsh Posté le 16-12-2009 à 12:56:59    

Certes le sujet est vieux, mais je te conseilles de remplacer ton pattern par:
 
^([A-Za-z0-9_\.-]*)@([A-Za-z_-]*)\.([A-Za-z_\.]*)$
 
En effet, il affichait un adresse du genre mon-nom@mon-domaine.com comme invalide, ce qui est faux.
 
 
Bonnes fêtes à tous.


Message édité par fred0755 le 16-12-2009 à 12:58:20
Reply

Marsh Posté le 16-12-2009 à 13:38:05    

si tu a php >= 5.2

 

le mieux c'est filter_var (pas besion de s'embête):

 

filter_var($email, FILTER_VALIDATE_EMAIL);

 

sinon suivant le code soucre de FILTER_VALIDATE_EMAIL
le regex est

 
Code :
  1. /^((\\\"[^\\\"\\f\\n\\r\\t\\b]+\\\" )|([A-Za-z0-9_][A-Za-z0-9_\\!\\#\\$\\%\\&\\'\\*\\+\\-\\~\\/\\=\\?\\^\\`\\|\\{\\}]*(\\.[A-Za-z0-9_\\!\\#\\$\\%\\&\\'\\*\\+\\-\\~\\/\\=\\?\\^\\`\\|\\{\\}]*)*))@((\\[(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))\\])|(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))|((([A-Za-z0-9])(([A-Za-z0-9\\-])*([A-Za-z0-9]))?(\\.(?=[A-Za-z0-9\\-]))?)+[A-Za-z]+))$/D


Message édité par stealth35 le 16-12-2009 à 13:38:19
Reply

Marsh Posté le 16-12-2009 à 18:48:45    

La solution la plus efficace (mais pas forcément la meilleure) est la validation par email (envoie d'un email avec lien d'activation et attente de l'activation pour valider l'adresse).
Si cette solution est trop contraignante, on peut toujours utiliser la fonction checkdnsrr.
Elle permet de vérifier le nom de domaine de l'adresse email. Mais elle n'assure pas que l'adresse existe vraiment.
Par exemple :  
truc@bidulechose.fr ne sera pas validé (car le nom de domaine bidulechose.fr n'est pas enregistré).
jean.martin@gmail.com sera validé (car le nom de domaine existe)
x546efzsfgz@gmail.com sera validé (car le nom de domaine existe, mais s'il y a peu de chance que le compte existe).
 
EDIT : j'oubliais, cette fonction ne fonctionne pas sous windows.

Message cité 1 fois
Message édité par Profil supprimé le 16-12-2009 à 18:53:12
Reply

Marsh Posté le 17-12-2009 à 00:07:29    

+1 c'est le top ca

Reply

Marsh Posté le 17-12-2009 à 10:10:51    


Faut lire la doc jusqu'au bout :o

Citation :

Version   Description
5.3.0  This function is now available on Windows platforms.

Reply

Marsh Posté le 17-12-2009 à 19:18:21    

[:arn0] bien vu


Message édité par Profil supprimé le 17-12-2009 à 19:18:28
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed