Ereg = preg_match .... j'ai un petit probleme de script
Fermé
rikounet75
Messages postés
1
Date d'inscription
vendredi 16 août 2013
Statut
Membre
Dernière intervention
16 août 2013
-
16 août 2013 à 03:02
Utilisateur anonyme - 16 août 2013 à 16:30
Utilisateur anonyme - 16 août 2013 à 16:30
A voir également:
- Ereg = preg_match .... j'ai un petit probleme de script
- Script vidéo youtube - Guide
- Petit colis distribution - Forum Consommation & Internet
- [Sujet Groupé] Shein livraison sans réception ✓ - Forum Consommation & Internet
- Excel trier du plus grand au plus petit - Guide
- Petit 2 clavier iphone ✓ - Forum iPhone
2 réponses
Utilisateur anonyme
16 août 2013 à 10:33
16 août 2013 à 10:33
oy !
Je ne peux pas tester mais à prioris je dirai qu'il faudrai que tu echappe ton énumération :
Tu peux énumérer des caractères entre "[" et "]", c'est ce que tu veux faire. Mais par exemple pour le caractère "]", il ne correspond pas à la fin de ton énumération mais il EST un caractère énuméré. Il faut l'echapper : "\]". Il faut utiliser l'echappement pour chaque caractères étant interprétée pour une expression régulière pour justement qu'il ne soit vu QUE comme un caractère.
de tête je sais que
] et [ => délimiteur d'énumération
( et ) => délémiteur de ce que tu veux récupérer
* => n fois un caractère*
+ => 1 fois un caractère
? => pas le cactère suivant
. => n'importe quel caractère
^ => fin de chaine
$ => début de chaine
| => OU
par contre tu as bien échappé le "\" en "\\" ^^
Je ne peux pas tester mais à prioris je dirai qu'il faudrai que tu echappe ton énumération :
Tu peux énumérer des caractères entre "[" et "]", c'est ce que tu veux faire. Mais par exemple pour le caractère "]", il ne correspond pas à la fin de ton énumération mais il EST un caractère énuméré. Il faut l'echapper : "\]". Il faut utiliser l'echappement pour chaque caractères étant interprétée pour une expression régulière pour justement qu'il ne soit vu QUE comme un caractère.
de tête je sais que
] et [ => délimiteur d'énumération
( et ) => délémiteur de ce que tu veux récupérer
* => n fois un caractère*
+ => 1 fois un caractère
? => pas le cactère suivant
. => n'importe quel caractère
^ => fin de chaine
$ => début de chaine
| => OU
par contre tu as bien échappé le "\" en "\\" ^^
re
je ris mais c'est nerveux...
je te remercie tout d'abord ..vraiment
quand je remplace ma regex par celle que tu me proposes de tester , dreamweaver m'indique immédiatement qu'il y a des erreurs de syntaxe...
pourrait on correspondre par email ?
comme cela je t'envoie tout le script php ?
ou ce serait abuser de ta bonté ?
Cordialement
je ris mais c'est nerveux...
je te remercie tout d'abord ..vraiment
quand je remplace ma regex par celle que tu me proposes de tester , dreamweaver m'indique immédiatement qu'il y a des erreurs de syntaxe...
pourrait on correspondre par email ?
comme cela je t'envoie tout le script php ?
ou ce serait abuser de ta bonté ?
Cordialement
ca ne serai pas abusé mais je ne pourrai pas t'aider ^^ (je suis au taff, je n'ai d accès aux mail et je t'avous qu'une fois chez moi, je fais fis de comment ca marche ^^).
mais tu peux essayer tes regex ici :
https://www.myregextester.com/index.php
tu coche php et tu peux tester tes regex (saisie du haut) sur le texte que tu veux (saisie du bas) : ca affichera les résultats + la syntaxe php .
par exemple, la regex que je t'ai donné te renverra :
tu remplace $sourcestring par $_REQUEST['email'] et ca devrai le faire.
Ce code affiche les résultats, je ne pense pas que ce soit ce qui t'intéresse, mais déjà tu peux tester ta regex ^^.
PS : ce n'est pas parceque dreamweaver te dis que c'est pas bon que ca ne l'est vraiment pas ^^. Le mieux est de tester et voir directement le résultat ;)
mais tu peux essayer tes regex ici :
https://www.myregextester.com/index.php
tu coche php et tu peux tester tes regex (saisie du haut) sur le texte que tu veux (saisie du bas) : ca affichera les résultats + la syntaxe php .
par exemple, la regex que je t'ai donné te renverra :
PHP Code Example: <?php $sourcestring="your source string"; preg_match_all('/([\._a-z0-9-]*?@[\.a-z0-9-]*?\.[a-z]{2,3})/',$sourcestring,$matches); echo "<pre>".print_r($matches,true); ?>
tu remplace $sourcestring par $_REQUEST['email'] et ca devrai le faire.
Ce code affiche les résultats, je ne pense pas que ce soit ce qui t'intéresse, mais déjà tu peux tester ta regex ^^.
PS : ce n'est pas parceque dreamweaver te dis que c'est pas bon que ca ne l'est vraiment pas ^^. Le mieux est de tester et voir directement le résultat ;)
ok
donc j'ai remplace ma regex par la tienne
([\._a-z0-9-]*?@[\.a-z0-9-]*?\.[a-z]{2,3})
maintenant dans le formulaire
quand on le remplit pour envoyer un message
le message se fige
donc n'est pas envoyé
mais par contre pas de message d'erreur
comme ct le cas auparavant .....
rappel: avant quand on envoyait
un message à partir du formulaire
ceci s'affichait; mais le message était quand même envoyé
Warning: preg_match() [function.preg-match]:
Unknown modifier '[' in /homez.744/melime/www/js/sendmail.php on line 41
Warning: preg_match() [function.preg-match]:
No ending delimiter '^' found in /homez.744/melime/www/js/sendmail.php on line 49
Warning: preg_match() [function.preg-match]:
Unknown modifier '[' in /homez.744/melime/www/js/sendmail.php on line 57
donc j'ai remplace ma regex par la tienne
([\._a-z0-9-]*?@[\.a-z0-9-]*?\.[a-z]{2,3})
maintenant dans le formulaire
quand on le remplit pour envoyer un message
le message se fige
donc n'est pas envoyé
mais par contre pas de message d'erreur
comme ct le cas auparavant .....
rappel: avant quand on envoyait
un message à partir du formulaire
ceci s'affichait; mais le message était quand même envoyé
Warning: preg_match() [function.preg-match]:
Unknown modifier '[' in /homez.744/melime/www/js/sendmail.php on line 41
Warning: preg_match() [function.preg-match]:
No ending delimiter '^' found in /homez.744/melime/www/js/sendmail.php on line 49
Warning: preg_match() [function.preg-match]:
Unknown modifier '[' in /homez.744/melime/www/js/sendmail.php on line 57
16 août 2013 à 11:21
j'essaie de comprendre
quand on "ouvre" il faut " fermer " ( la traduction de l'echappé )
et le caractere [ ] seront pris en compte en tant que delimiteur si on ne met pas / devant et // apres
je te dis que je suis totalement debutant
mais dans le c as que j'ai exposé ....je pige que dalle...j'ai essayé de mettre / avant après etc..toutes les combinaisons...tjs des messages d'erreur...
en tout cas je te remercie d'avoir pris (de prendre )sur ton temps pour me répondre
A+ E
16 août 2013 à 11:35
C'est, à dire que si tu veux récupérer [ ou ] la regex sera :
Du peu que j'ai pu regarder, je dirai que tu veux vérifier qu'un email est correctement formatté. Pour cela tu peux écrire celle-ci :
ce qui est entre ( et ) sera le résultat.
ta regex est :
je pense que tu peux tester ;
qui te retournera l'email s'il est valide.
Ajouter les délimiteur ^ et $ dans ton cas n'est pas nécessaire car tu test toute la chaine, et cette chaine représente l'email (perso je les utilise quasiment jamais).
comme tu peux le constater, j'ai retiré le "." et je l'ai remplacé par "\." => "." seul désigne n'importe quel caractère. "\." (point echappé) désigne le caractère "point".