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 :

Lecture structurée d'un string


Sujet :

Langage PHP

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 17
    Par défaut Lecture structurée d'un string
    Bonjour,

    Je dois en fait parser un fichier PHP contenant les lignes suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    /* Explication */
    define("MAVARIABLE", "Sa valeur", true) ;
    define("UNEAUTRE", "Une autre valeur", true) ;
     
    /* Autre commentaire */
    define("ENCOREUNE", "Coucou", true) ;
    Mon but est de récupérer dans un tableau les deux éléments qui m'intéressent pour chaque ligne, à savoir le nom de la variable (ex : MAVARIABLE) et sa valeur (ex : Sa valeur). Il faut évidemment détecter les lignes de commentaires pour les sauter.

    Je me doute qu'il faut employer la fonction ereg(), mais j'ai du mal avec cette fonction !!

    J'image que c'est quelque chose du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ereg("define\(\"((.*))\", \"((.*))\"", $line, $result) ;
    et que mes deux résultats devraient être dans $result[0] et $result[1] ! Mais ça ne fonctionne pas... Je sais que c'est la bonne fonction, mais je ne la maitrise vraiment pas !

    Quelqu'un pourrait-il m'aider ?

    Un grand merci,
    dachu

  2. #2
    Membre expérimenté Avatar de daniel61
    Inscrit en
    Décembre 2006
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 139
    Par défaut
    Citation Envoyé par dachu
    Je me doute qu'il faut employer la fonction ereg(), mais j'ai du mal avec cette fonction !!
    malheureusement, je suis obliger de t'informer que ereg() et ses fonctions soeurs sont actuellement en mauvaise santé... d'ailleurs il semblerait qu'un certain PHP6 ait commencé à organiser leurs funérailles paix à leurs âmes.

    Citation Envoyé par dachu
    J'image que c'est quelque chose du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ereg("define\(\"((.*))\", \"((.*))\"", $line, $result) ;
    et que mes deux résultats devraient être dans $result[0] et $result[1] !
    preg_match_all() est probablement la fonction qui te paraitra la + sexy

    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
     
    $line='
    /* Explication */
    define("MAVARIABLE", "Sa valeur", true) ;
    define("UNEAUTRE", "Une autre valeur", true) ;
     
    /* Autre commentaire */
    define("ENCOREUNE", "Coucou", true) ;
    ';
     
    if(preg_match_all('#define\s*\(\s*"(.*)"\s*,\s*"(.*)"#',$line,$result)) {
      echo '<pre>';
      print_r($result);
      echo '</pre>';
    }
    avec PCRE, il faut un caractère pour délimiter l'expression, dans ce qui précède j'ai utilisé #. PCRE a besoin d'une délimitation parcequ'il est possible d'ajouter des options lorsque nécessaire. tu dois reconnaitre le reste de l'expression, car c'est la tienne où j'ai ajouté des \s* un peu partout, parceque les programmeurs sont des petites bêtes qui aiment tapper sur spacebar.

    le résultat sera un array contenant 3 array... [0] contiendra les chaines ayant satisfait l'expression au complet... [1] contiendra seulement les occurences de la première parenthèse (nom de la constante)... [2] contiendra bien entendu les occurences seulement de la seconde parenthèse.

Discussions similaires

  1. [Débutant] lecture fichier contenant des string
    Par ghada97 dans le forum MATLAB
    Réponses: 1
    Dernier message: 12/09/2013, 17h04
  2. [Win] Thread passage Structure pointeur Vector + string
    Par jerem3000 dans le forum Threads & Processus
    Réponses: 2
    Dernier message: 31/10/2012, 16h24
  3. lecture de JSON, Type string ?
    Par leothelast dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 08/10/2010, 15h09
  4. Vector de structure contenant des string
    Par Nicolas Bauland dans le forum C++
    Réponses: 9
    Dernier message: 04/02/2010, 13h47
  5. [TFileStream] Problème de lecture de string
    Par Pedro dans le forum Langage
    Réponses: 6
    Dernier message: 28/06/2004, 14h06

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