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 :

Regex sur mot Mer [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
    Septembre 2013
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 31
    Par défaut Regex sur mot Mer
    Bonjour,
    Je cherche à retrouver le mot "mer" dans un texte (ex: bord de mer) à l'aide la function preg_match :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (preg_match("#mer#i", $string)) echo "ok";
    La function repère tous les mots contenant "mer", ex: commerce.
    Hors , je souhaite uniquement retrouver le mot "mer" sachant que celui-ci peut être au début du texte, à la fin, au milieu et tout seul.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_match("#^mer$|[\s]mer[\s]|^mer[\s]|[\s]mer$#i", $string) echo "ok";
    Cette syntaxe semble fonctionner mais je la trouve un peu lourde à écrire, n'y a t'il pas une regex plus simple pour arriver au même résultat ?


    Merci de votre aide

  2. #2
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2016
    Messages : 5
    Par défaut
    Bonjour,

    Tout simplement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_match("/\bmer\b/i", $string)
    Ça utilise ce que les anglophones appellent "boundary", pour la doc PHP c'est ICI

    Cordialement

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2013
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 31
    Par défaut
    Parfait merci. C'est ce que je cherchais.

    Par contre j'ai un comportement aléatoire dès qu'il y a des accents

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    if (preg_match("#\bvic[ée]rale\b#i", "vicérale")) echo "OUI" // NON
    if (preg_match("#\bvic[ée]rale\b#i", "vicerale")) echo "OUI" // OUI
    if (preg_match("#\bintitul[ée]\b#i", "intitulé")) echo "OUI" // OUI
    if (preg_match("#\bintitul[ée]\b#i", "intituléxxx")) echo "OUI" // OUI
    if (preg_match("#\bintitul[ée]\b#i", "xxxintitulé")) echo "OUI" // NON
    if (preg_match("#\bintitul[ée]\b#i", "intitule")) echo "OUI" // OUI
    if (preg_match("#\bintitul[ée]\b#i", "intitulexxx")) echo "OUI" // NON
    Une idée ?

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Si tes pages sont en UTF8, ajoute le modificateur "u" à ton expression

    Si j'étais toi par contre je ferai l'inverse : je retirerai les accents du texte plutôt que de tous les lister dans mes expressions.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Invité
    Invité(e)
    Dernière modification par Invité ; 04/06/2016 à 08h38.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2013
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 31
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Si tes pages sont en UTF8, ajoute le modificateur "u" à ton expression
    Ce bon vieux utf8, merci

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2013
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 31
    Par défaut
    En affinant, je rencontre un nouveau problème.
    Je souhaite toujours retrouver le mot "mer" SAUF lorsqu'il est suivi par "rouge".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $string = "mer verte";
    if (preg_match("#\bmer\b#iu", $string) && !preg_match("#\bmer rouge\b#iu", $string)) echo "OUI"; // OUI
    Ca fonctionne mais je n'arrive pas à réunir cette condition dans un seul et même Regex.
    J'ai essayé ça sans succès...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $string = "mer verte";
    if (preg_match("#\bmer\b(^rouge)#iu", $string)) echo "OUI"; // NON
    Merci.

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

Discussions similaires

  1. Regex sur syntaxe mot de passe
    Par raks13 dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 29/03/2011, 18h17
  2. regex sur mot en gras seulement
    Par scalpa98 dans le forum VB.NET
    Réponses: 0
    Dernier message: 16/02/2010, 17h07
  3. Recherche sur mots de 3 lettres
    Par mamizo dans le forum Bases de données
    Réponses: 7
    Dernier message: 16/02/2005, 14h59
  4. [jakarta][regex]Matcher mot en entier.
    Par thibaut dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 26/05/2004, 13h33

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