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 :

Détecter des mots séparés par différents espaces [Fait] [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2007
    Messages : 17
    Points : 10
    Points
    10
    Par défaut Détecter des mots séparés par différents espaces
    Bonjour

    Dans un script, j'ai la possibilité de définir une liste d'expressions à filtrer.

    Ainsi, si je définis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $filter = "belle fleur"
    --> "belle fleur" ne passe plus.

    Mais j'aimerais aussi que si l'on écrive "belle fleur" (avec deux espaces entre les deux mots), cela soit aussi bloqué.

    J'ajoute donc ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $filter = "belle\s*fleur"
    --> "bellefleur" "belle fleur", "belle fleur" (2 espaces entre les deux) ou même "belle fleur" (3 espaces) ne passent plus.

    Le \s* indique en effet qu'il faut repérer 0 ou plusieurs espaces blancs.

    Et maintenant le problème :

    Lorsque deux espaces blancs se suivent, l'éditeur wysiwyg que j'utilise a la fâcheuse tendance de remplacer le deuxième espace blanc par  . Donc si la personne écrit "belle fleur" avec deux espaces entre les deux mots, l'éditeur wysiwig change cela en "belle  fleur"). De ce fait, mon expression regex ne détecte plus le bon mot car un   s'y est glissé.

    J'aimerais donc connaitre le moyen d'indiquer dans mon expression qu'il faut bloquer toute chaine commençant par "belle" et se terminant par "fleur", avec, entre les deux, soit rien du tout, soit des espaces blancs ou des  .

    Voici quelques exemples de ce qu'il faudrait bloquer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "belle fleur", "belle  fleur", "belle fleur", "belle  fleur", "belle   fleur".
    Merci de 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
    Salut,

    un pattern ultra simple, non testé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $filter = "belle(\s*( )*)*fleur";
    • Avant de poser une question, n'hésitez pas à chercher dans la FAQ et les forums
    • Merci d'utiliser les balises de code (# dans l'éditeur)
    • N'oubliez pas de vous servir des boutons , et

    S.N.A.F.U

  3. #3
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 305
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 305
    Points : 15 633
    Points
    15 633
    Par défaut
    essaye ça avec la fonction http://php.net/preg_match
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $filter = '#belle(\s| )*fleur#';

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2007
    Messages : 17
    Points : 10
    Points
    10
    Par défaut
    Merci pour les deux solutions. Je vais les tester dans la soirée. Juste pour que je comprenne,à quoi sert le # ajouté dans la deuxième solution?

  5. #5
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 305
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 305
    Points : 15 633
    Points
    15 633
    Par défaut
    Citation Envoyé par lorange Voir le message
    Juste pour que je comprenne,à quoi sert le # ajouté dans la deuxième solution?
    c'est pour indiquer le début et la fin des expression régulières PCRE : http://php.net/book.pcre
    Je te conseille d'utiliser les expression régulières PCRE (fonctions commençant par "preg_") parce qu'elle sont beaucoup plus rapide que les expression régulières POSIX (fonctions commençant par "ereg_")

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 22/10/2013, 22h57
  2. [XL-2003] Extraire Mots séparé par des virgules
    Par guigui69 dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 04/05/2011, 18h15
  3. récupérer des mots séparés par un espace dans une ligne
    Par laurentze dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 14/06/2010, 16h04
  4. Récupérer des mots séparés par un espace dans un .txt
    Par elnino67 dans le forum Débuter
    Réponses: 2
    Dernier message: 28/05/2008, 22h13
  5. Comment récupérer des valeur séparé par ; ?
    Par Nico128 dans le forum Delphi
    Réponses: 12
    Dernier message: 14/01/2007, 12h42

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