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 :

Expression régulière et correcteur orthographique du navigateur


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 11
    Points : 10
    Points
    10
    Par défaut Expression régulière et correcteur orthographique du navigateur
    Bonjour,

    Je viens de découvrir une anomalie sur un site que j’ai créé pour un client, et que je peux refaire sur ma machine de test.

    J’ai un formulaire dans lequel je demande d’entrer un titre. Pour valider ce titre, j’ai créé une expression régulière qui accepte les caractères accentués :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (preg_match('/^[a-zA-Z0-9 ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ€().,:\'-]{4,100}$/u',stripslashes($_POST['titre']))) {
    	$nfr = escape_data($_POST['titre']);
    } else {
    	$par_errors['titre'] = « <br />Certains caractères ne sont pas acceptés. Veuillez corriger. » ;
    }
    Si on entre dans le formulaire : Chambre d’hôte cela marche sans aucun problème.
    Si on entre : Chambre d’hote cela fonctionne aussi.
    Par contre, si j’utilise le vérificateur d’orthographe du navigateur (testé sous Firefox 4 et Chrome), le mot hote et donc corrigé en hôte, mais dans ce cas, mon expression régulière ne fonctionne plus.

    J’ai donc remarqué qu’à chaque fois que l’on utilise le vérificateur d’orthographe du navigateur, cela me donne une erreur sur mon expression régulière, et pourtant le texte n’a aucun caractère supplémentaire (en tout cas je ne les vois pas).

    Quelqu’un a-t-il déjà rencontré ce problème, ou bien connaitrait-il une solution ?


    Je suis sous PHP 5.3.1 serveur Apache 2.0

    Merçi d’avance pour votre aide.

  2. #2
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Est-ce que la correction ne remplace pas par une html_entity ?

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

    Informations forums :
    Inscription : Novembre 2010
    Messages : 11
    Points : 10
    Points
    10
    Par défaut
    @ s.n.a.f.u.

    C'était ma première idée, mais il n'y a aucun remplacement avec un html_entity.
    De plus, en faisant plusieurs test, le problème ne se pose pas sur un é ou è, mais pour le moment qu'avec le ô...

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 11
    Points : 10
    Points
    10
    Par défaut
    Je viens de faire un autre test, et il semble que celà se produise seulement si il y a un apostrophe avant le ô.
    Par exemple : hopital corrigé en hôpital fonctionne, mais l'hopital corrigé en l'hôpital n'est pas accepté...

  5. #5
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Je ne vois pas d'autre possibilité que de débuguer à l'ancienne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $title = stripslashes(trim($_POST['titre'])));
    var_dump($title);
    if (preg_match('/^[a-zA-Z0-9 ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ€().,:\'-]{4,100}$/u',$title) {
    	$nfr = escape_data($title);
    } else {
    	$par_errors['titre'] = « <br />Certains caractères ne sont pas acceptés. Veuillez corriger. » ;
    }

Discussions similaires

  1. [RegEx] Expression régulières : Balises <SCRIPT>
    Par Gwipi dans le forum Langage
    Réponses: 2
    Dernier message: 25/04/2006, 00h25
  2. Expression réguliére
    Par Mad_Max dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 16/09/2003, 19h17
  3. [expression régulière] mon cerveau fait des noeuds..
    Par nawac dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 27/05/2003, 11h06
  4. Expressions réguliéres
    Par Tooms dans le forum Langage
    Réponses: 4
    Dernier message: 06/12/2002, 19h42
  5. Réponses: 5
    Dernier message: 11/06/2002, 16h21

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