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 :

Chaine comprise entre 2 chaines spécifiées [RegEx]


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 12
    Points : 8
    Points
    8
    Par défaut Chaine comprise entre 2 chaines spécifiées
    Bonjour,

    Je ne suis pas très habitué aux regex et je cherche une méthode afin d'obtenir à partir de la chaine :

    $string = "ou=compta,ou=france,dc=example"

    je souhaite obtenir :
    $stringObtenu = "compta france"

    ou au mieux un tableau avec dedans :
    Array
    (
    [0] => compta
    [1] => france
    )


    J'avais commencé par faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    $string = "ou=compta,ou=france,dc=example";
     
    $end = split("^ou=", $string);
     
    echo "<pre>";
    print_r($end);
    echo "</pre>";
     
    //qui me renvoit
     
    Array
    (
        [0] => 
        [1] => compta,ou=france,dc=example
    )


    Merci d'avance de votre aide !

  2. #2
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $string = "ou=compta,ou=france,dc=example";
     
    preg_match("#ou=([^,]+),#U", $string, $resultat);
     
    print_r($resultat[1]);

  3. #3
    Futur Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Merci pour votre réponse rapide, cependant ce n'est pas ce que je cherche.
    $resultat renvoit :

    et il me faudrait qqch dans le genre afin de recuperer le nom des OU:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [0] => compta
    [1] => france

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    preg_match s'arrête au premier résultat trouvé. Il faut utiliser preg_match_all pour récupérer tous les résultats.

  5. #5
    Futur Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Merci bien

    LA solution est donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    <?php
    $string = "ou=compta,ou=france,dc=example";
     
    preg_match_all("#ou=([^,]+),#U", $string, $resultat);
     
    //echo "<pre>";
    //print_r($resultat);
    //echo "</pre>";
     
    foreach($resultat[1] as $value){
    	echo $value . " ";
    }
     
    ?>
     
    // affiche
    compta france
    Si qqn a l'envie dexpliquer lexp Reg : "#ou=([^,]+),#U"
    sinon je chercherais par moi meme et posterais l'explication

  6. #6
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut
    oups, oui, c'est vrai, désolé ;o)
    preg_match_all c'est mieux

  7. #7
    Futur Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Il y a une doc pour que je puisse comprendre le pattern utilisé ? Je n'ai jamais vu de "#" dans les expressions régulières

  8. #8
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    # sert ici de délimiteur, le but étant d'avoir un délimiteur qui n'est pas dans le pattern. Tu peux aller jeter un coup d'oeil à ce tuto

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 18/07/2013, 23h08
  2. Réponses: 1
    Dernier message: 16/10/2010, 17h50
  3. Récupérer la chaine de caractères comprise entre deux caracteres
    Par zaz147 dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 22/09/2008, 17h15
  4. [RegEx] remplacer une chaine comprise entre 2 balises
    Par Khleo dans le forum Langage
    Réponses: 3
    Dernier message: 29/05/2008, 17h02
  5. Réponses: 8
    Dernier message: 21/02/2008, 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