Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/05/2011, 15h19   #1
Invité de passage
 
Emmanuel Petit
Inscription : novembre 2010
Messages : 11
Détails du profil
Informations personnelles :
Nom : Emmanuel Petit

Informations forums :
Inscription : novembre 2010
Messages : 11
Points : 4
Points : 4
Par défaut Problème regex non valide

Bonjour,

Pour valider une entrée, j'ai instruction suivante :
Code :
if (preg_match('/^[a-zA-Z0-9 ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ€().,:\'-]{4,100}$/u',stripslashes($_POST['nomfr']))) {
Cela fonctionne très bien, accepte les accents. Mais j'ai noté une erreur. Lorsque l'on utilise le correcteur d'orthographe du navigateur (firefox ou chrome), mon regex me renvoi une erreur, et l'entrée n'est plus validée.

Sur les conseils de s.n.a.f.u., j'ai essayé de trouver le problème. Je me suis aperçu que le problème se produisait si il y avait une apostrophe dans
le texte à vérifier.

Par exemple : si on tape hopital, et on utilise le vérificateur d'orthographe du navigateur pour le changer en hôpital, l'entrée est validée. Si on tape l'hopital et on le corrige en l'hôpital, l'entré est invalidée.

Après de nombreuses recheches, je me suis aperçu que l'apostrophe était changé par le vérificateur orthographique de ' en ´. Mais si je met le ´ dans mon regex, celà ne fonctionne pas. D'ailleurs en faisant str_split sur mon entrée, il décompose le caractères en 3, et ne montre pas de ´.

Comment faire, pour que mon regex reconnaisse ce caractère?

Merçi d'avance
chat de nuit est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2011, 15h29   #2
Membre Expert
 
Avatar de gene69
 
Inscription : janvier 2006
Messages : 951
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : janvier 2006
Messages : 951
Points : 1 063
Points : 1 063
il est souvent plus simple d'utiliser filter_var() et filter_input(), c'est pensé pour ça.
il est possible de faire les substitutions inverse avant ta regex.
il est possible de vérifier que la chaine que tu reçois soit bien encodée en utf8 et pas en autrechose qui ne supporterai pas le caractère
il est possible d'utiliser une classe "négative" qui refuse tous les caractères que tu voudras lister. http://php-regex.blogspot.com/ => any character except aAeEio or u
__________________
PHP fait nativement la validation d'adresse électronique Vous êtes perdu en PHP? rassurez-vous ici (en)
Utilisez le bouton résolu!
gene69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2011, 15h54   #3
Invité de passage
 
Emmanuel Petit
Inscription : novembre 2010
Messages : 11
Détails du profil
Informations personnelles :
Nom : Emmanuel Petit

Informations forums :
Inscription : novembre 2010
Messages : 11
Points : 4
Points : 4
Par défaut Merçi gene69 pour la réponse

J'ai utilisé un regex negatif, et celà fonctionne très bien. Merçi.
chat de nuit est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h35.


 
 
 
 
Partenaires

Hébergement Web