Ereg = preg_match .... j'ai un petit probleme de script
rikounet75
Messages postés
1
Statut
Membre
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour
j'ai un souci de script, qui pourrait m'aider ?
sur mon site y a un formulaire pour poster des messages
mais des erreurs persistent . je suis sûr que c'est trois fois rien...pour les connaisseurs
pour ma part je suis hyper débutant, voici les erreurs ci-dessous
je vous remercie par avance
Rikou
Nom:
Email:
Message:
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
je vous fais la copie du php de la ligne 41 à la ligne 57 ( là où il y a les erreurs )
} elseif (preg_match( "[ ][{}()*+?.\\^$|]", $_REQUEST['name'] ) ) {
$pass = 1;
$alert .= "<li>" . $alertname . "</li>";
}
if ( empty($_REQUEST['email']) ) {
$pass = 1;
$alert .= "<li>" . $emptyemail . "</li>";
$alert .= "<script>jQuery(\"#email\").addClass(\"error\");</script>";
} elseif (preg_match("^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,3})$", $_REQUEST['email']) ) {
$pass = 1;
$alert .= "<li>" . $alertemail . "</li>";
}
if ( empty($_REQUEST['message']) ) {
$pass = 1;
$alert .= "<li>" . $emptymessage . "</li>";
$alert .= "<script>jQuery(\"#message\").addClass(\"error\");</script>";
} elseif (preg_match( "[ ][{}()*+\\^$|]", $_REQUEST['message'] ) ) {
j'ai un souci de script, qui pourrait m'aider ?
sur mon site y a un formulaire pour poster des messages
mais des erreurs persistent . je suis sûr que c'est trois fois rien...pour les connaisseurs
pour ma part je suis hyper débutant, voici les erreurs ci-dessous
je vous remercie par avance
Rikou
Nom:
Email:
Message:
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
je vous fais la copie du php de la ligne 41 à la ligne 57 ( là où il y a les erreurs )
} elseif (preg_match( "[ ][{}()*+?.\\^$|]", $_REQUEST['name'] ) ) {
$pass = 1;
$alert .= "<li>" . $alertname . "</li>";
}
if ( empty($_REQUEST['email']) ) {
$pass = 1;
$alert .= "<li>" . $emptyemail . "</li>";
$alert .= "<script>jQuery(\"#email\").addClass(\"error\");</script>";
} elseif (preg_match("^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,3})$", $_REQUEST['email']) ) {
$pass = 1;
$alert .= "<li>" . $alertemail . "</li>";
}
if ( empty($_REQUEST['message']) ) {
$pass = 1;
$alert .= "<li>" . $emptymessage . "</li>";
$alert .= "<script>jQuery(\"#message\").addClass(\"error\");</script>";
} elseif (preg_match( "[ ][{}()*+\\^$|]", $_REQUEST['message'] ) ) {
A voir également:
- Ereg = preg_match .... j'ai un petit probleme de script
- Script vidéo youtube - Guide
- Ghost script - Télécharger - Polices de caractères
- Petit 2 ✓ - Forum Windows
- Trier du plus petit au plus grand excel - Guide
- Mas script - Accueil - Windows
2 réponses
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
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
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 :
"^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,3})$"je pense que tu peux tester ;
([\._a-z0-9-]*?@[\.a-z0-9-]*?\.[a-z]{2,3})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".