Fonction preg_match

Résolu/Fermé
t671 Messages postés 1419 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 26 février 2024 - Modifié par t671 le 5/08/2012 à 17:56
t671 Messages postés 1419 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 26 février 2024 - 6 août 2012 à 12:11
Bonjour,

Un formulaire de contact est remplie.
Avant l'envoie, je veux vérifier si le message ne contient pas certains caractères :

$mots = array('[link=','[url=','viagra','sexe','cul','baise','bite','buy','eurosport','nice','porn','best','lovely','pharmacy','love','href','valium','url','http', 'href=','porno','Cool site','Good site','Discounts','nudephoto');  
$mask = ''\b' . implode('|', $mots) . '\b'i';  
if( preg_match( $mask, $message2 ) ) 
{  
 echo '<br><font color="red"><h2><center>Votre message presente des url ou des caractères non autorisés .....<br>Merci de reformuler votre demande.</center></h2></font>';  
 exit;   
} 

J'ai un serveur (Free) où cela fonctionne.
Mais sur un autre serveur, j'ai le message d'erreur : Warning: preg_match() [function.preg-match]: Compilation failed: missing terminating ] for character class at offset 166 in ...........
Peut-être remplacer la function "preg_match". Mais par quoi ?

Merci

2 réponses

tryan44 Messages postés 1288 Date d'inscription mardi 24 janvier 2012 Statut Membre Dernière intervention 26 octobre 2014 219
5 août 2012 à 18:29
Bonjour,

Réponse un peut au pif ... il me semble que le crochet "[" est un méta-caractère et comme il est présent au sein d'une expression régulière, il me semble qu'il faut utiliser un antislash "\" devant chaque crochet.
0
t671 Messages postés 1419 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 26 février 2024 11
6 août 2012 à 12:11
Bien vu tryan44 ........... ;o))
C'est ok !
Merci !
A +
0