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
- Cette fonction n'est pas disponible actuellement tv lg - Forum Téléviseurs
- Virginie organise un rallye avec 30 équipes. elle veut créer un code pour désigner chaque équipe. elle a commencé à la main, mais elle voudrait le faire calculer à l'aide d'une formule. proposez une formule comportant une seule fonction et à recopier vers le bas dans la colonne a du fichier à télécharger. quelle formule sera en a9 ? ✓ - Forum Programmation
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 567
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
33079
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
23 avril 2024
7 749
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