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 :

Récupérer le contenu d'une chaine entre deux séparateurs [RegEx]


Sujet :

Langage PHP

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

    Informations forums :
    Inscription : Octobre 2004
    Messages : 58
    Points : 46
    Points
    46
    Par défaut Récupérer le contenu d'une chaine entre deux séparateurs
    Bonjour,

    j'ai un souci avec les regex et je ne m'en sort pas...
    J'aimerai récupérer dans cette chaine :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ( DESTINATION IN ('COUR','COM','QUAL') OR TYPE_ID IN ('46','30','147','123') ) or ( DESTINATION IN ('INF') OR TYPE_ID IN ('21','60') ) or ( DESTINATION IN ('INF','MARK') )
    tout ce qui est entre "DESTINATION IN" et une parathèse fermante ")".

    j'ai essayé ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $user_where_clause = ( DESTINATION IN ('COUR','COM','QUAL') OR TYPE_ID IN ('46','30','147','123') ) or ( DESTINATION IN ('INF') OR TYPE_ID IN ('21','60') ) or ( DESTINATION IN ('INF','MARK') );
    $pattern = "#DESTINATION IN (.*\))#";
    preg_match_all($pattern,$user_where_clause,$out);
    mais ça ne me renvoie qu'une seule occurrence trouvée alors qu'il y en a 3...
    Tableau retourné :
    Code X : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Array
    (
        [0] => Array
            (
                [0] => DESTINATION IN ('COUR','COM','QUAL') OR  TYPE_ID IN ('46','30','147','123') ) or ( DESTINATION IN ('INF') OR  TYPE_ID IN ('21','60') ) or ( DESTINATION IN ('INF
            )
    
        [1] => Array
            (
                [0] => ('COUR','COM','QUAL') OR  TYPE_ID IN ('46','30','147','123') ) or ( DESTINATION IN ('INF') OR  TYPE_ID IN ('21','60') ) or ( DESTINATION IN ('INF
            )
    
    )

    Merci de me filer un coup de main

  2. #2
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 868
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 868
    Points : 16 258
    Points
    16 258
    Par défaut
    Par défaut, le caractère * est gourmand, donc pour le rendre non gourmand il faut utiliser le modificateur U :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $pattern = "#DESTINATION IN \((.*)\)#U";

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 58
    Points : 46
    Points
    46
    Par défaut
    Merci ça fonctionne nikel, le modificateur U change tout en effet!

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

Discussions similaires

  1. [RegEx] comment récupérer une chaine entre deux mots
    Par mat8883 dans le forum Langage
    Réponses: 3
    Dernier message: 14/11/2012, 19h29
  2. [RegExp] Récupérer une chaine entre deux délimiteurs
    Par Soncar dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 22/02/2011, 21h07
  3. Réponses: 6
    Dernier message: 17/02/2010, 19h48
  4. REGEXP : recupérer une chaine entre deux autres chaines
    Par dude666 dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 31/08/2006, 09h23

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