Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
760 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  PHP : ereg

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

PHP : ereg

n°309172
kileak2
Posté le 14-02-2003 à 11:45:13  profilanswer
 

Salut
 
j'ai bien tout lu ds le FM :) mais je suis un peu sec.
 
J'ai un ereg pour checker un email :
 

Code :
  1. <?
  2. $address = "toto@titi.com" ;
  3. $input = "^[^@  ]+@([a-zA-Z0-9\-]+\.)+([a-zA-Z0-9\-]{2}|net|com|gov|mil|org|edu|int)\$" ;
  4. if(ereg( $input,$address) )
  5. echo $address." OK !" ;
  6. else
  7. echo $address." KO :((" ;
  8. ?>


 
J'ai sur php.net trouvé un gars qui explicitait bien tout : (ca peu servir ca :) )
 

Citation :

I must've read 50 regular expression tutorials and understood nothing from each. I finally worked them out through playing around and looking at other people's examples. I wrote this to summarise and clarify things. I find it helps as a quick lookup reference:
 
^                Start of String
$                End of string
 
n*               Zero or more of 'n'
n+               One or more of 'n'
n?               A possible 'n'
 
n{2}             Exactly two of 'n'
n{2,}           At least 2 or more of 'n'
n{2,4}           From 2 to 4 of 'n'
 
()               Parenthesis to group expressions
(n|a)          Either 'n' or 'a'
 
.                Any single character
 
[1-6]            A number between 1 and 6
[c-h]          A lower case character between c and h
[D-M]            An upper case character between D and M
[^a-z]           Absence of lower case a to z
[_a-zA-Z]        An underscore or any letter of the alphabet
 
^.{2}[a-z]{1,2}_?[0-9]*([1-6]|[a-f])[^1-9]{2}a+$
 
A string beginning with any two characters
Followed by either 1 or 2 lower case alphabet letters
Followed by an optional underscore
Followed by zero or more digits
Followed by either a number between 1 and 6 or a character between a and f (Lowercase)
Followed by a two characters which are not digits between 1 and 9
Followed by one or more n characters at the end of a string


 
C'est excellent, ca marche mais je ne comprends pas un truc dans ^[^@  ]+@([a-zA-Z0-9\-]+\.)+([a-zA-Z0-9\-]{2}|net|com|gov|mil|org|edu|int)\$
 
les \ servent à koi ? je sais bien que c le caractère d'échappement mais je vois pas leur intérêt là. (surtout le dernier avt le $.
 
De plus, il semble que [^@  ]+@ signifie, 1 ou n caractères avt le @ mais PAS : @ et '2 espaces'? c ca ?
 
Merci
a+
 
edit : j'ai même fait un test ss ces caractères d'échappement et ca fonctionne nickel dc je vois vraiment pas...


Message édité par kileak2 le 14-02-2003 à 11:46:34
mood
Publicité
Posté le 14-02-2003 à 11:45:13  profilanswer
 

n°309186
skylight
Made in France.
Posté le 14-02-2003 à 11:59:16  profilanswer
 

ok donc si je mets truc@wanadoo.fr ca marchera pas ;)

n°309200
deliriumtr​emens
sic transit intestinal...
Posté le 14-02-2003 à 12:11:43  profilanswer
 

Explication du \  
 
(source : http://www.asp-php.net/tutorial/asp-php/regexp.php excellente adresse au par ailleurs)
 
\ Marque le caractère suivant comme caractère spécial ou littéral.
Par exemple, "n" correspond au caractère "n". "\n" correspond à un caractère de nouvelle ligne. La séquence "\\" correspond à "\", tandis que "\(" correspond à "(".
 
 
Donc il me paraît utile dans le cas où il est avant le . puisque dans une expression régulière, le point correpond à tout caractère unique (alors que là on veut détecter un "." )
 
Devant les - je suis pas sûr que ça soit indispensable, mais comme il est utilisé dans la syntaxe des expressions (0-9 par exemple), il est peut-être utile de le faire précéder par un \
 
Avant le $ final, ça me paraît vraiment inutile (voir faux)
 
^=début de la saisie
[^@  ]+@  signifie qu'on peut avoir tous les caractères possibles sauf @ et "espace"(?) répétés une ou plusieurs fois (ça s'est l'explication jusqu'au + compris) puis un @
 
Ce qui me fait dire que ton expression régulière est pas parfaite pour tester des mails (tous les caractères ne sont pas admis dans une adresse mail avant le @, nan ?)
 
J'utilise (c'est pour de l'ASP mais ça reste la même chose, si je ne m'abuse) celle proposée sur asp-php.net
 
expression="^([a-zA-Z0-9]+(([\.\-\_]?[a-zA-Z0-9]+)+)?)\@(([a-zA-Z0-9]+[\.\-\_])+[a-zA-Z]{2,4})$"
 
Elle me paraît plus claire et plus complète.
 
Et finalement, c'est le genre de test qu'il est plus raisonnable de faire côté client, donc en javascript.  
 
Mais là n'était pas la question.


Message édité par deliriumtremens le 14-02-2003 à 12:15:31
n°309201
deliriumtr​emens
sic transit intestinal...
Posté le 14-02-2003 à 12:14:36  profilanswer
 

Skylight a écrit :

ok donc si je mets truc@wanadoo.fr ca marchera pas ;)


 
et le
 
+([a-zA-Z0-9\-]{2}
 
c'est pour les cochons ? ;)
 
(Mais là encore, c'est mal foutu : le 0-9 et le \- sont pas admis dans une adresse mail...)

n°309212
skylight
Made in France.
Posté le 14-02-2003 à 12:26:54  profilanswer
 

et ce pattern ? }|net|com|gov|mil|org|edu|int)
 
 
 
donc les .fr.st sont bannis ..
 
enfin c'est bien le bordel cette regex, ya + simple

n°309222
dsls
Posté le 14-02-2003 à 12:33:43  profilanswer
 

Skylight a écrit :

et ce pattern ? }|net|com|gov|mil|org|edu|int)
 
 
 
donc les .fr.st sont bannis ..
 
enfin c'est bien le bordel cette regex, ya + simple


:heink: Ben non, si tu regardes toute la fin de la regexp : ([a-zA-Z0-9\-]{2}|net|com|gov|mil|org|edu|int)
En gros on accepte une extension de 2 lettres quelconques, ou une extension de 3 lettres parmi celles qui sont citées
Le ".fr" de ".fr.st" sera matché dans la partie précédente, à savoir ([a-zA-Z0-9\-]+\.)+

n°309230
deliriumtr​emens
sic transit intestinal...
Posté le 14-02-2003 à 12:36:41  profilanswer
 

Skylight a écrit :

et ce pattern ? }|net|com|gov|mil|org|edu|int)
 
 
 
donc les .fr.st sont bannis ..
 
enfin c'est bien le bordel cette regex, ya + simple


 
 
Ben vi. Edit : ben non.
 
Et fectivement, le \ avant le $ ça fausse (encore plus) l'expression !
 


Message édité par deliriumtremens le 14-02-2003 à 12:37:45
n°309231
gm_superst​ar
Appelez-moi Super
Posté le 14-02-2003 à 12:37:06  profilanswer
 

marchera pas avec les .museum :/
 
Edit: et les .info


Message édité par gm_superstar le 14-02-2003 à 12:37:21

---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
n°309232
dsls
Posté le 14-02-2003 à 12:38:22  profilanswer
 

gm_superstar a écrit :

marchera pas avec les .museum :/
 
Edit: et les .info


... et les .biz

n°309234
deliriumtr​emens
sic transit intestinal...
Posté le 14-02-2003 à 12:38:44  profilanswer
 

gm_superstar a écrit :

marchera pas avec les .museum :/
 
Edit: et les .info


 
Ca existe déjà, les .museum ?

mood
Publicité
Posté le 14-02-2003 à 12:38:44  profilanswer
 

n°309237
gm_superst​ar
Appelez-moi Super
Posté le 14-02-2003 à 12:40:19  profilanswer
 
n°309238
deliriumtr​emens
sic transit intestinal...
Posté le 14-02-2003 à 12:42:59  profilanswer
 

Fichtre.
 
Alors le regexp que j'ai proposé est en retard.
 
Moi aussi.
 
donc {2,6}
 
Que ce monde évolue... [:deliriumtremens]

n°309243
kadreg
profil: Utilisateur
Posté le 14-02-2003 à 12:48:49  profilanswer
 


 
Et les .tribune alors ?


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°309244
deliriumtr​emens
sic transit intestinal...
Posté le 14-02-2003 à 12:49:22  profilanswer
 

kadreg a écrit :


 
Et les .tribune alors ?


{2, 100}
 
et je suis tranquille pour quelques années :kaola:

n°309246
gm_superst​ar
Appelez-moi Super
Posté le 14-02-2003 à 12:50:52  profilanswer
 

{2,} alors ;)
 
Non, {2,6} me parait suffisant. Kadreg, vilain chenapant !


---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
n°310207
kileak2
Posté le 15-02-2003 à 09:29:38  profilanswer
 


 
Merci à toi et à tous ceux qui ont participé  :jap:  
 
Je suis rassuré de voir que ce script est un peu vérolé car je commencais à me dire que j'y pigeais plus rien !
 
asp-php.net : je suis un ingrat ! Venant de l'ASP j'avais commencé à apprendre PHP sur ce site et j'y suis même pas aller voir :)
 
 :jap:  :hello:  
a+

n°315048
kileak2
Posté le 21-02-2003 à 16:00:56  profilanswer
 

DeliriumTremens a écrit :


 
et le
 
+([a-zA-Z0-9\-]{2}
 
c'est pour les cochons ? ;)
 
(Mais là encore, c'est mal foutu : le 0-9 et le \- sont pas admis dans une adresse mail...)


 
salut
 
j'ai finalement opté pour ta RegEx, trouvée sur asp-php.net.
 
Je l'ai adapté en JavaScript avec un string.match(email) (voir un autre topic sur ce forum : aucun prob.
 
Par contre, et là j'hallucine, ca ne marche pas bien en PHP !
 
Dans kel cas ? : sur les emails avec des '-'.
 
Mon code :
 
 

Code :
  1. <?
  2. function checkEmail($e){
  3.   $re = "^([a-zA-Z0-9]+(([\.\-\_]?[a-zA-Z0-9]+)+)?)\@(([a-zA-Z0-9]+[\.\-\_])+[a-zA-Z]{2,4})$" ;
  4.  
  5.   if(ereg($re,$e))
  6. return '<b>OK</b>' ;
  7.   else
  8. return '<b>KO</b>' ;
  9. }
  10. $mail = "toto@ti-ti.com";
  11. $retour = checkEmail($mail) ;
  12. echo($mail." est ".checkEmail($mail)) ;
  13. ?>


 
Reponse : toto.... est KO !!
 
En JS : pas de prob !
Pour les emails sans '-' no prob !
 
Là je suis vraiment sec de chez sec !
 
merci
a+

n°315096
kileak2
Posté le 21-02-2003 à 16:59:21  profilanswer
 

kileak2 a écrit :


 

Code :
  1. <?
  2. $re = "^([a-zA-Z0-9]+(([\.\-\_]?[a-zA-Z0-9]+)+)?)\@(([a-zA-Z0-9]+[\.\-\_])+[a-zA-Z]{2,4})$" ;
  3. ?>


 


 
Bon j'ai trouvé une parade mais je comprends et j'aimerais bien comprendre !
 
j'ai dû changer la partie de ma RegEx qui teste les .-_ :
 
[-._]? Ici l'ordre est important car [.-_]? aurait interprété le - comme séparateur genre [A-Z].
 
Dc en mettant -._ avec - en 1er ca marche !
 
Je ne comprends pas pkoi le \ ne jouait pas son rôle d'échappement ????
D'autant que cette RegEx est connue et marche en JS !
 
Mystère...

n°315542
forummp3
@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@
Posté le 22-02-2003 à 16:23:26  profilanswer
 

[:drapo]

n°316139
kileak2
Posté le 24-02-2003 à 08:44:05  profilanswer
 
n°316210
deliriumtr​emens
sic transit intestinal...
Posté le 24-02-2003 à 10:21:05  profilanswer
 

Mystère, effectivement.
 
La RegExp marche sans problème en ASP.
 
toto@ti-ti.com est considéré comme une adresse valide sans faire de changement !

n°316813
forummp3
@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@
Posté le 24-02-2003 à 19:20:54  profilanswer
 

j'ai bien aimé l'explication que tu as trouvé :)

n°316875
kileak2
Posté le 24-02-2003 à 20:52:42  profilanswer
 

forummp3 a écrit :

j'ai bien aimé l'explication que tu as trouvé :)


 
c ironique je pense :)
 
c à marcher sur la tête ce truc. Si tu as une bonne explication tu es le bien venu :)
 
a+

n°442434
xiluoc
un pc pour les unirs ....
Posté le 28-06-2003 à 09:44:33  profilanswer
 

kileak2 a écrit :

Salut
 
j'ai bien tout lu ds le FM :) mais je suis un peu sec.
 
J'ai un ereg pour checker un email :
 

Code :
  1. <?
  2. $address = "toto@titi.com" ;
  3. $input = "^[^@  ]+@([a-zA-Z0-9\-]+\.)+([a-zA-Z0-9\-]{2}|net|com|gov|mil|org|edu|int)\$" ;
  4. if(ereg( $input,$address) )
  5. echo $address." OK !" ;
  6. else
  7. echo $address." KO :((" ;
  8. ?>


 
J'ai sur php.net trouvé un gars qui explicitait bien tout : (ca peu servir ca :) )
 

Citation :

I must've read 50 regular expression tutorials and understood nothing from each. I finally worked them out through playing around and looking at other people's examples. I wrote this to summarise and clarify things. I find it helps as a quick lookup reference:
 
^                Start of String
$                End of string
 
n*               Zero or more of 'n'
n+               One or more of 'n'
n?               A possible 'n'
 
n{2}             Exactly two of 'n'
n{2,}           At least 2 or more of 'n'
n{2,4}           From 2 to 4 of 'n'
 
()               Parenthesis to group expressions
(n|a)          Either 'n' or 'a'
 
.                Any single character
 
[1-6]            A number between 1 and 6
[c-h]          A lower case character between c and h
[D-M]            An upper case character between D and M
[^a-z]           Absence of lower case a to z
[_a-zA-Z]        An underscore or any letter of the alphabet
 
^.{2}[a-z]{1,2}_?[0-9]*([1-6]|[a-f])[^1-9]{2}a+$
 
A string beginning with any two characters
Followed by either 1 or 2 lower case alphabet letters
Followed by an optional underscore
Followed by zero or more digits
Followed by either a number between 1 and 6 or a character between a and f (Lowercase)
Followed by a two characters which are not digits between 1 and 9
Followed by one or more n characters at the end of a string


 
C'est excellent, ca marche mais je ne comprends pas un truc dans ^[^@  ]+@([a-zA-Z0-9\-]+\.)+([a-zA-Z0-9\-]{2}|net|com|gov|mil|org|edu|int)\$
 
les \ servent à koi ? je sais bien que c le caractère d'échappement mais je vois pas leur intérêt là. (surtout le dernier avt le $.
 
De plus, il semble que [^@  ]+@ signifie, 1 ou n caractères avt le @ mais PAS : @ et '2 espaces'? c ca ?
 
Merci
a+
 
edit : j'ai même fait un test ss ces caractères d'échappement et ca fonctionne nickel dc je vois vraiment pas...


mon sauveur !!
pareil j ai lu plein du tuto et ct toujours pas clair
merci a ton topic  :jap:


---------------
jeunes con de la derniere averse, vieux con des neiges d'antant.
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  PHP : ereg

 

Sujets relatifs
PHP/Apache et ASP/IIS : conflit ?PHP / SSL / Paiement en ligne
[PHP] Retour à la ligne ???equivalent en PHP de certaines fonctionnalités de javascript
PHP : Cryptage MD5 et Cookie[PHP] Pour les pros --- Que pensez-vous de cette formation?
[PHP] A tous ceux qui maitrise les str_replace et autre eregEreg sous PHP
[PHP] Expression Reguliere fonction ereg()[PHP] ereg();
Plus de sujets relatifs à : PHP : ereg


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR