PHP preg_match et REGEX ne marche pas comme voulu

Résolu/Fermé
danwolf7 Messages postés 54 Date d'inscription jeudi 29 octobre 2009 Statut Membre Dernière intervention 12 juillet 2016 - Modifié par danwolf7 le 23/01/2013 à 18:19
danwolf7 Messages postés 54 Date d'inscription jeudi 29 octobre 2009 Statut Membre Dernière intervention 12 juillet 2016 - 1 févr. 2013 à 20:07
Bonjour,

J'ai créé la fonction suivante dans le but de traquer n'importe où dans le string $message les caractères non présent dans le REGEX.

<?php   
$message = $_POST["message"];   
if(preg_match("/[a-zA-Z0-9éèêëáàâäúùûüñõãîìíÿ$£@ç.,:;!?¿_-]/", $message)){   
 echo "OK : $message";   
} else {   
 echo "Fail";   
}   
?>


Le scripte repère effectivement des caractères interdits mais uniquement lorsqu'ils sont seuls.

Pour illustrer, admettons que le caractère = est interdit. Si j'écris juste "=", il me retourne l'erreur comme je l'ai demandé. Mais si j'écris par exemple "quelque=chose", le scripte ne repère pas le = en cavale.

Pourriez vous m'aider à trouver l'erreur ?

Merci d'avance !

A voir également:

2 réponses

JooS Messages postés 2468 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 228
29 janv. 2013 à 22:38
Salut,

Essaye avec ça :
preg_match('#(^[a-zA-Z0-9éèêëáàâäúùûüñõãîìíÿ$£@ç.,:;!?¿_-]+)$#', $message);

0
danwolf7 Messages postés 54 Date d'inscription jeudi 29 octobre 2009 Statut Membre Dernière intervention 12 juillet 2016 5
30 janv. 2013 à 23:20
Oh super, ça marche au poil ! Merci beaucoup !
0
JooS Messages postés 2468 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 228
30 janv. 2013 à 23:45
Cool, de rien.
0
JooS Messages postés 2468 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 228
Modifié par JooS le 30/01/2013 à 23:51
Le "^" : Début de l'expréssion.
Le "$" : Fin de l'expréssion.
Le "+" : 1 ou plusieurs fois.
[ ] : Définition d'une classe.

Expression représentant une chaîne de 1 caractère et qui commence par un caractère appartenant a la classe.
#(^[a-zA-Z0-9éèêëáàâäúùûüñõãîìíÿ$£@ç.,:;!?¿_-])#

Expression représentant une chaîne de 1 caractère et qui commence et se termine par un caractère appartenant a la classe.
#(^[a-zA-Z0-9éèêëáàâäúùûüñõãîìíÿ$£@ç.,:;!?¿_-])$#

Expression représentant une chaîne de 1 ou plusieurs caractères, qui commence et se termine par un caractère appartenant a la classe.
#(^[a-zA-Z0-9éèêëáàâäúùûüñõãîìíÿ$£@ç.,:;!?¿_-]+)$#
0
danwolf7 Messages postés 54 Date d'inscription jeudi 29 octobre 2009 Statut Membre Dernière intervention 12 juillet 2016 5
1 févr. 2013 à 20:07
Merci pour l'explication complémentaire, ça me sera bien utile :)
0