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

Discussion: Lire un flux RSS

  1. #1
    Membre habitué Avatar de lostsoul
    Homme Profil pro
    Rédacteur web, blogueur, développeur web junior
    Inscrit en
    novembre 2003
    Messages
    742
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Rédacteur web, blogueur, développeur web junior
    Secteur : Conseil

    Informations forums :
    Inscription : novembre 2003
    Messages : 742
    Points : 177
    Points
    177

    Par défaut Lire un flux RSS

    Bonjour,

    Je débute sur un petit projet. Je voudrais afficher un flux RSS avec SimpleXML mais je n'arrive à afficher qu'un seul item et je ne comprends pas pourquoi.
    Si quelqu'un voit mon erreur svp ?

    Voici ma fonction toute simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        public function rss()
        {
            $rss = simplexml_load_file('https://www.francetvinfo.fr/france.rss');
            return $this->render('project/rss.html.twig', array(
                'rss' => $rss,
        ));
     
        }
    Et la page Twig pour afficher le flux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <ul>
    {% for item in rss %}
        <li>{{ item.item.title }}</li>
        <li>{{ item.item.link }}</li>
        <li>{{ item.item.description }}</li>
        <li>{{ item.title }}</li>
     
    {% endfor %}
    </ul>
    Le problème vient-il de ma boucle for ou de ma fonction ?

    Merci d'avance,
    Librement,

    ANDRE Ani
    ANDRE Ani
    GNU/Linux et Informatique Libre
    https://andre-ani.fr

  2. #2
    Membre extrêmement actif Avatar de Sodium
    Homme Profil pro
    Développeur Web
    Inscrit en
    avril 2014
    Messages
    961
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : avril 2014
    Messages : 961
    Points : 1 291
    Points
    1 291

    Par défaut

    Bonjour,

    Tu peux convertir ton flux RSS en array et le parcourir de là façon suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $data = simplexml_load_file('https://www.francetvinfo.fr/france.rss');
    $json = json_encode($data);
    $array = json_decode($json, true);
    echo '<pre>';
    print_r($array['channel']['item']);
    exit();

  3. #3
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Architecte Web / Android
    Inscrit en
    août 2003
    Messages
    5 324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Architecte Web / Android
    Secteur : Industrie

    Informations forums :
    Inscription : août 2003
    Messages : 5 324
    Points : 14 117
    Points
    14 117

    Par défaut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $json = json_encode($data);
    $array = json_decode($json, true);
    Sinon on évite ce genre d'horreur et on travail avec l'objet

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $rss = simplexml_load_file('https://www.francetvinfo.fr/france.rss');
    return $this->render('project/rss.html.twig', array(
                'rssItems' => $rss->channel->item,
    ));
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    {% for item in rssItems %}
        <li>{{ item.title }}</li>
        <li>{{ item.link }}</li>
        <li>{{ item.description }}</li>
    {% endfor %}
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre habitué Avatar de lostsoul
    Homme Profil pro
    Rédacteur web, blogueur, développeur web junior
    Inscrit en
    novembre 2003
    Messages
    742
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Rédacteur web, blogueur, développeur web junior
    Secteur : Conseil

    Informations forums :
    Inscription : novembre 2003
    Messages : 742
    Points : 177
    Points
    177

    Par défaut

    Merci beaucoup grunk ;-)
    Ça fonctionne bien ;-)
    Plus qu'à voir comment limiter le nombre des flux récupérés maintenant.

    Dans la boucle for je suppose, avec Twig, il y a peut-être quelque chose ? Je vais voir.
    ANDRE Ani
    GNU/Linux et Informatique Libre
    https://andre-ani.fr

  5. #5
    Membre extrêmement actif Avatar de Sodium
    Homme Profil pro
    Développeur Web
    Inscrit en
    avril 2014
    Messages
    961
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : avril 2014
    Messages : 961
    Points : 1 291
    Points
    1 291

    Par défaut

    Citation Envoyé par grunk Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $json = json_encode($data);
    $array = json_decode($json, true);
    Sinon on évite ce genre d'horreur et on travail avec l'objet

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $rss = simplexml_load_file('https://www.francetvinfo.fr/france.rss');
    return $this->render('project/rss.html.twig', array(
                'rssItems' => $rss->channel->item,
    ));
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    {% for item in rssItems %}
        <li>{{ item.title }}</li>
        <li>{{ item.link }}</li>
        <li>{{ item.description }}</li>
    {% endfor %}
    Effectivement c'est mieux, j'avais testé $rss->channel->item sauf que quand tu fais un dump de ça ça renvoie un unique tableau item, ce qui est loin d'être intuitif

  6. #6
    Membre habitué Avatar de lostsoul
    Homme Profil pro
    Rédacteur web, blogueur, développeur web junior
    Inscrit en
    novembre 2003
    Messages
    742
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Rédacteur web, blogueur, développeur web junior
    Secteur : Conseil

    Informations forums :
    Inscription : novembre 2003
    Messages : 742
    Points : 177
    Points
    177

    Par défaut

    Effectivement.
    Merci encore ;-)
    ANDRE Ani
    GNU/Linux et Informatique Libre
    https://andre-ani.fr

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

Discussions similaires

  1. Problème pour lire les flux rss en flex
    Par gannher dans le forum Flex
    Réponses: 6
    Dernier message: 18/07/2007, 17h24
  2. [RSS] Lire un flux RSS sur son site perso
    Par nicofonk dans le forum Syntaxe
    Réponses: 5
    Dernier message: 22/11/2006, 23h55
  3. Lire un flux RSS
    Par Houbaa dans le forum C++Builder
    Réponses: 1
    Dernier message: 25/09/2006, 16h05
  4. [ThunderBird] Refuse de lire les flux RSS depuis 3jours
    Par Swoög dans le forum Thunderbird
    Réponses: 4
    Dernier message: 27/06/2006, 22h33
  5. Comment lire un flux rss en asp
    Par ch_lensois dans le forum ASP
    Réponses: 2
    Dernier message: 20/06/2006, 12h32

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