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 :

preg_match et caratères spéciaux [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 264
    Points : 141
    Points
    141
    Par défaut preg_match et caratères spéciaux
    Bonjour,

    le code ci-dessous reconnait bien le mot guitare mais pas >guitare
    pourtant ma guitare a bien 6 cordes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
      $mot = ">guitare";
      if (preg_match("#\b($mot)\b#i", "J'aime jouer de la >guitare le dimanche."))
      {
        echo 'trouvé';
      }
      else
      {
        echo 'pas trouvé';
      }

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 63
    Points : 67
    Points
    67
    Par défaut
    \b, dans le masque, indique une limite de mot donc si tu fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     $mot = ">guitare";
      if (preg_match("#\b($mot)\b#i", "J'aime jouer de la >guitare le dimanche."))
      {
        echo 'trouvé';
      }
      else
      {
        echo 'pas trouvé';
      }
    il ne cherchera vraiment que la chaine de caractère "guitare" . Si tu enlève le premier \b il trouvera ton mot. Toutefois si tu as une seconde guitare (guitare2 ou >guitare2) ton expression renverra 'pas trouvé'

  3. #3
    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 connais pas la liste exhaustive des caractères de mots, mais il semble que le ">" n'en fasse pas partie. Donc l'expression considère qu'il n'y a pas de caractère de début de mot avant ">".
    Si quelqu'un trouve un lien pour ces caractères de mot ou leur définition exacte, cela pourrait être intéressant.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 264
    Points : 141
    Points
    141
    Par défaut
    c'est curieux parce que même > n'est pas reconnu...

    merci

  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
    Citation Envoyé par ctrl+z Voir le message
    c'est curieux parce que même > n'est pas reconnu...

    merci
    Pas forcément bizarre : même punition, "&" est-il un caractère de mot ?

    Exemple pour illustrer cela, même s'il ne veut rien dire, celui-là passe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    $myString = "klqjsdlkjq,asdqsd qmlksdm.";
    $mot = "etgt;guitare";
      if (preg_match("#\b($mot)\b#i", "J'aime jouer de la etgt;guitare le dimanche."))
      {
        echo 'trouvé';
      }
      else
      {
        echo 'pas trouvé';
      }

  6. #6
    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
    Voilà, j'ai trouvé la définition : http://www.regular-expressions.info/wordboundaries.html

    In all flavors, the characters [a-zA-Z0-9_] are word characters.
    Ceci explique cela.
    Il va falloir repenser la regex...

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

Discussions similaires

  1. Probléme caratères spéciaux avec mysqldump
    Par mercure07 dans le forum Administration
    Réponses: 7
    Dernier message: 03/02/2009, 22h46
  2. Traitement de chaine caratères spéciaux &darr; &raquo;
    Par ctrl+z dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 29/08/2008, 12h13
  3. [Débutant] string.Split et caratères spéciaux
    Par jerome.fortias dans le forum C#
    Réponses: 11
    Dernier message: 24/09/2007, 11h52
  4. [RegEx] preg_match() et signes spéciaux
    Par Bensor dans le forum Langage
    Réponses: 2
    Dernier message: 16/07/2007, 09h38
  5. suppression des caratères spéciaux dans une table
    Par syl221 dans le forum Access
    Réponses: 6
    Dernier message: 31/08/2005, 09h20

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