IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Problème regex non valide [RegEx]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 11
    Par défaut Problème regex non valide
    Bonjour,

    Pour valider une entrée, j'ai instruction suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Membre Expert
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    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 : 1 769
    Par défaut
    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

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 11
    Par défaut Merçi gene69 pour la réponse
    J'ai utilisé un regex negatif, et celà fonctionne très bien. Merçi.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème Nombre Non Valide
    Par N_Ron dans le forum Oracle
    Réponses: 2
    Dernier message: 29/07/2009, 14h19
  2. Problème attributs non valide
    Par Erazion dans le forum ASP.NET
    Réponses: 4
    Dernier message: 26/03/2008, 15h32
  3. [c#][1.1] Problème WMI demande non valide
    Par ___trankilou___ dans le forum Windows Forms
    Réponses: 2
    Dernier message: 15/09/2006, 14h51
  4. [GD] thumbnail : Problème d'image JPEG non valide
    Par Commodore dans le forum Bibliothèques et frameworks
    Réponses: 19
    Dernier message: 09/08/2006, 11h41
  5. Problème : XML non valide...
    Par loupdeau dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 08/04/2005, 15h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo