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 :

Parser une définition de consante. [RegEx]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 19
    Par défaut Parser une définition de consante.
    Bonjour,

    J'ai quelques soucis avec les expressions régulières.
    Je souhaite récupérer sous forme de clés/valeur la définition d'une constante en php:

    Exemple :
    J'ai ça en chaine de caractère:
    define("MACONSTANTE","Coucou");
    Et je souhaite récupérer dans un tableau "MACONSTANTE" et "Coucou"

    Pour ça j'utilise les regexp. Mais ça ne marche pas. Du moins j'ai pas réussi à trouver la bonne syntaxe.

    Mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_match("^define\((<Key>\w+), (<Value>\w+)\)$",$Value,$matches);
    Si quelqu'un peu me donner un coup de main. Merci.

  2. #2
    Membre émérite Avatar de sebhm
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2004
    Messages
    1 090
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 090
    Par défaut
    Bonjour,

    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
    18
    19
    20
    21
    $valeurs=array("define(\"MACONSTANTE\"),(\"Coucou\");");
    $pattern='#^define\("([a-zA-Z]+)"\),\("([a-zA-Z]+)"\);?$#';
     
     
    echo "Le masque <strong>$pattern</strong> correspond-il à :<br /><ul>";
    foreach($valeurs as $une_val) {
        $matches = array();
        echo "<li><strong>$une_val</strong> ?<br />";
        if(preg_match_all($pattern, $une_val, $matches, PREG_SET_ORDER))
        {
            echo "Oui :<br /><pre>";
            print_r($matches);
            echo "</pre>";
        }
        else
        {
            echo "Non";
        }
    	echo "</li>";
    }
    echo "</ul>";
    EDIT :
    et meme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $pattern='#^define\("(\w+)"\),\("(\w+)"\);?$#';
    avec \w comme tu le fais

  3. #3
    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 : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Le \w remplace agréablement la classe [a-zA-Z]

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $reg = '/^define\("(?<key>\w+)","(?<value>\w+)"\);$/';
    Il pourrait être également utile de gérer les espaces blancs qui peuvent apparaitre un peu partout.

  4. #4
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 19
    Par défaut Merci !
    Merci à tous pour vos réponses.
    En y allant à taton j'ai réussi avec ce modèle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_match("`^define\([\"'](.+)[\"'],[\"'](.+)[\"']\)$`",$Value,$matches)
    Bizarrement j'ai pas réussi à mettre les nom de variable avec les <>.

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

Discussions similaires

  1. [XML] Parser une DTD?
    Par La Truffe dans le forum Format d'échange (XML, JSON...)
    Réponses: 6
    Dernier message: 03/04/2007, 11h28
  2. [OCaml] Parser une ligne de commande
    Par Thanatos dans le forum Caml
    Réponses: 4
    Dernier message: 10/12/2004, 10h11
  3. Parser une chaine en shell script
    Par Gogoye dans le forum Linux
    Réponses: 10
    Dernier message: 19/07/2004, 17h49
  4. [DOM] parser une String pour en faire un document XML
    Par Fladnag dans le forum Format d'échange (XML, JSON...)
    Réponses: 9
    Dernier message: 29/03/2004, 11h04
  5. [langage] Continuer a parser une ligne
    Par D[r]eadLock dans le forum Langage
    Réponses: 5
    Dernier message: 30/09/2002, 18h49

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