Forum Programmation.php Récupérer le contenu au sein d'Array

Posté par (page perso) .
Tags : aucun
0
15
fév.
2009
Je précise dès le départ, je ne connais presque pas PHP...

J'ai une variable qui contient une chaine "$result" telle que:
echo $result;
Array ( [toto] => Array ( [plop] => Array ( [*] => Ceci Est le contenu qui m'intéresse ) ) )

Mon objectif est de ne conserver que le texte suivant: "Ceci Est le contenu qui m'intéresse".

J'ai tenté de lire le contenu de $result['toto'], mais je n'obtiens qu'un "A" qui ne doit pas être un signe de réussite ;-)

Si quelqu'un a une idée... Je suis preneur. Merci d'avance.
  • # ...

    Posté par . Évalué à 4.

    Si j'ai bien compris tu as un array dans un array etc
    Dans ce cas $result['toto']['plop']['*'] devrait te renvoyer ce que tu recherche
    • [^] # Re: ...

      Posté par (page perso) . Évalué à 2.

      Je me suis mal exprimé (surtout dans le titre du post). En fait il s'agit d'une chaine... qui a une "forme d' Array".

      L'idéal serait de pouvoir en faire une Array à part entière pour pouvoir aller chercher l'indice qui me convient.
      • [^] # Re: ...

        Posté par . Évalué à 2.

        J'avais bien peur d'avoir compris ça ...
        Malheureusement il n'y a pas a ma connaissance pas de moyen d'en refaire un tableau vu que la représentation ne correspond pas a la forme littérale.
        Je suppose que tu obtient cette chaîne avec un print_r ?

        La comme ça la seule idée qui me vient est une regexp du genre:
        ereg("\[$key\] => ([a-zA-Z' ]+)", $str, $regs)

        Ça marche sur ton exemple, mais teste la bien quand même.
        • [^] # Re: ...

          Posté par (page perso) . Évalué à 2.

          Merci Jean B pour ton aide.

          Au final, sur l'idée d'un ami, j'ai préféré changé le format de réception des données depuis l'API (je ne la maitrise pas, mais je peux donner en paramètre d'une requête le format souhaité).

          Avec un unserialize sur la réponse, j'ai pu parser le tableau avec: ['toto']['ploup']['*'] et obtenir relativement proprement ce que je souhaitais :-)

          Merci encore.
          • [^] # Re: ...

            Posté par (page perso) . Évalué à 3.

            L'idéal aurait été de faire les choses proprement !

            A savoir utiliser les fonctions json comme modèle de transport ou du xml.

            Côté serveur :
            <?php
            $array = array(
            'key' => 'value',
            'key2' => 'value2'
            );
            echo json_encode($array);

            Côté client :
            <?php
            $array = json_decode(file_get_contents('http://example.com/export.php'));

            Tu pourrais faire de même avec simplexml.

            ps : ajoute le contrôle d'erreur côté réception client, on sait pas ce qui peut se passer sur le réseau...
      • [^] # Re: ...

        Posté par . Évalué à 2.

        L'idéal serait de pouvoir en faire une Array à part entière pour pouvoir aller chercher l'indice qui me convient.

        PHP est dans la philosophie un "C" scriptable, et reprend la plupart des caractéristiques.

        $result['toto']['plop']['*'] est une chaine, qui est aussi un tableau si on y accède par référence + décalage

        echo $result['toto']['plop']['*'][2];

        c

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.