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 :

Perdu dans les expression régulières


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 40
    Points : 40
    Points
    40
    Par défaut Perdu dans les expression régulières
    Bonjour,

    J'ai une expression du type :
    {valeur1} {valeur2} {valeur3}
    ou encore
    {valeur1} - {valeur2}

    Je souhaite isoler les termes de type {valeur} et les termes non entourés d'accolades (qui peuvent valoir n'importe quoi).

    Cela doit donc donner par exemple :
    terme 1 = '{valeur1}'
    terme 2 = ' - '
    terme 3 = '{valeur2}

    Complètement perdu dans les regex, quelle serait la règle me permettant d'obtenir cela (dans un tableau ?) ?

    Merci

  2. #2
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Points : 2 273
    Points
    2 273
    Par défaut
    Salut,
    un truc du style devrait fonctionner :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $str = '{valeur1} - {valeur2}';
    preg_match_all('`\{.*?\}|[^}{]*`', $str, $matches);

  3. #3
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    juste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_match_all('/[^{} ]+/', $str, $matches);
    Djakisback > je te déconseille d’utiliser l’opérateur d’exécution comme délimiteur

  4. #4
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Points : 2 273
    Points
    2 273
    Par défaut
    Je pense pas que ça pose de problème dans une chaîne de caractères
    (Sinon je crois qu'il veut les accolades et les espaces aussi, en revanche effectivement c'est + et non * comme je l'avais mis)

  5. #5
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par Djakisback Voir le message
    Je pense pas que ça pose de problème dans une chaîne de caractères
    non mais une erreur est si vite arrivé

  6. #6
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Points : 2 273
    Points
    2 273
    Par défaut
    C'est pas faux (bien que je ne me sente pas concerné, pas une bonne idée de proposer aux autres d'utiliser `)
    Rectif si on a besoin de garder les accolades + espaces :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_match_all('/\{.*?\}|[^}{]+/', $str, $matches);

Discussions similaires

  1. Réponses: 8
    Dernier message: 16/11/2014, 10h57
  2. Réponses: 9
    Dernier message: 23/07/2012, 17h00
  3. Réponses: 13
    Dernier message: 30/11/2011, 09h04
  4. Réponses: 6
    Dernier message: 14/12/2007, 23h26
  5. Bug dans les expressions régulières ?
    Par SergioF dans le forum Linux
    Réponses: 8
    Dernier message: 12/05/2004, 15h14

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