Syntaxe de la fonction ereg()
Résolu/Fermé
tonguim
-
8 août 2006 à 22:34
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 9 août 2006 à 12:51
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 9 août 2006 à 12:51
A voir également:
- Syntaxe de la fonction ereg()
- Fonction si et - Guide
- Fonction moyenne excel - Guide
- Fonction somme excel - Guide
- Excel renvoyer la valeur d'une cellule en fonction d'une autre - Forum Logiciels
- Fonction remplacer word - Guide
3 réponses
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
9 août 2006 à 12:51
9 août 2006 à 12:51
Salut,
il y a une erreur dans l'interpretation de la regex
\\. = le caractère '.'
en fait le 1er \ permet de voir le 2ème en tant que caractère littéral.
En bref pour faire correspondre un métacaractère dans le sens littéral il faut l'echapper avec un antislash.
\\. veut dire un antislash suit de n'importe quel caractère
Donc \a correspond en ce cas. Mais rT ne correspond pas.
Dans une adresse electronique on ne vois pas souvent le caractère antislash(enfin je n'ai jamais vu).
Voilà un test sur le site https://www16.qth.com/404.htm
1. pour /^.+@.+\\..+$/ je teste tonguim@ya\hoo.fr - résultat ok
2. pour /^.+@.+\\..+$/ je teste tonguim@yahoo.fr - résultat echec
3. pour /^.+@.+\..+$/ je teste tonguim@ya\hoo.fr - résultat ok
4. pour /^.+@.+\..+$/ je teste tonguim@yahoo.fr - résultat ok
Dans le 3ème cas c'est ok à cause de .+ donc \ est reconnu
Il faut comprendre les regex avant de commencer.
Voilà une regex un peu plus précise pour une adresse electronique
/^.+@[^\(\);:,<>\\]+\.[a-zA-Z]{2,4}/
Et ce n'est pas sûr que ça va toujours marcher. Ce n'est pas facile d'imaginer tout les cas
lami20j
il y a une erreur dans l'interpretation de la regex
\\. = le caractère '.'
en fait le 1er \ permet de voir le 2ème en tant que caractère littéral.
En bref pour faire correspondre un métacaractère dans le sens littéral il faut l'echapper avec un antislash.
\\. veut dire un antislash suit de n'importe quel caractère
Donc \a correspond en ce cas. Mais rT ne correspond pas.
Dans une adresse electronique on ne vois pas souvent le caractère antislash(enfin je n'ai jamais vu).
Voilà un test sur le site https://www16.qth.com/404.htm
1. pour /^.+@.+\\..+$/ je teste tonguim@ya\hoo.fr - résultat ok
2. pour /^.+@.+\\..+$/ je teste tonguim@yahoo.fr - résultat echec
3. pour /^.+@.+\..+$/ je teste tonguim@ya\hoo.fr - résultat ok
4. pour /^.+@.+\..+$/ je teste tonguim@yahoo.fr - résultat ok
Dans le 3ème cas c'est ok à cause de .+ donc \ est reconnu
Il faut comprendre les regex avant de commencer.
Voilà une regex un peu plus précise pour une adresse electronique
/^.+@[^\(\);:,<>\\]+\.[a-zA-Z]{2,4}/
Et ce n'est pas sûr que ça va toujours marcher. Ce n'est pas facile d'imaginer tout les cas
lami20j
mamiemando
Messages postés
33459
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
8 janvier 2025
7 813
9 août 2006 à 01:40
9 août 2006 à 01:40
^ = début de l'expression
.+= au moins un caractère quelconque
@ = le caractère arrobase
.+ = au moins un caractère quelconque
\\. = le caractère '.'
.+ = au moins un caractère quelconque
$ = fin de l'expression
Conclusion : cette expression catche une expression du genre xxxxx@xxxxxxxxx.xx ... une adresse mail quoi ;-)
Le résultat est mis dans la variable POST txtemail
Bonne chance
.+= au moins un caractère quelconque
@ = le caractère arrobase
.+ = au moins un caractère quelconque
\\. = le caractère '.'
.+ = au moins un caractère quelconque
$ = fin de l'expression
Conclusion : cette expression catche une expression du genre xxxxx@xxxxxxxxx.xx ... une adresse mail quoi ;-)
Le résultat est mis dans la variable POST txtemail
Bonne chance
Merci mamiemando pour ton explication.
Le champ txtemail est le champ qui contient l'adresse email qui a été saisie.
Le problème est que mon test ne fonctionne pas: il m'affiche l'erreur que l'adresse soit bonne ou pas. Comment corriger ce problème? Merci
Le résultat est mis dans la variable POST txtemail ...Ce que je voudrais plutôt c'est afficher un message d'erreur si l'adresse email1 est incorrecte (abscence du <b>@</b> et du <b>.</b>). Voici mon test:
if(!ereg('^.+@.+\\..+$', $_POST['txtemail1'])) {echo "L'adresse email1 est incorrecte";}
Le champ txtemail est le champ qui contient l'adresse email qui a été saisie.
Le problème est que mon test ne fonctionne pas: il m'affiche l'erreur que l'adresse soit bonne ou pas. Comment corriger ce problème? Merci