Partage
  • Partager sur Facebook
  • Partager sur Twitter

Récupérer le contenu d'une DIV (externe)

file get contents

Sujet résolu
    26 novembre 2012 à 7:29:38

    Bonjour à tous,

    Voila mon problème: je souhaite afficher sur une page de mon site la dernière news publié sur le site d'un partenaire...
    je n'ai pas accès à la base de donnée du site externe.
    Je voudrais donc récupérer le contenu d'une DIV présente sur le site externe pour l'afficher dans une DIV de mon site.
    Je pensais le faire en utilisant "file_get_contents".
    Sur le serveur du site externe la fonction file_get_contents est bien activée, j'arrive donc à récupérer le contenu de la page ciblée
    $file = file_get_contents('http://www.site-externe.fr/les-news.php');
    	echo($file)
    

    Jusque la facile tout le contenu de la page ciblée est bien contenue dans ma variable.
    Et je peux afficher toute la page avec "echo()".

    Moi je voudrais récupérer une DIV spécifique, le problème c'est que sur la page des news il y a les 10 dernières news affichée chacune dans une DIV qui font partie de la même classe mais qui n'ont pas de ID spécifiques.
    Comme ça :
    <body>
    <div class="du_contenu">Des trucs qui ne m'intéressent pas</div>
    <div class="news"> La dernière news... celle quim'intéresse</div>
    <div class="news"> L'avant dernière news... qui ne m'intéresse pas</div>
    <div class="news"> L'avant avant dernière news... qui ne m'intéresse pas</div>
    </body>
    

    Est ce que quelqu'un peut me donner un coup de main pour récupérer le contenu de la première DIV de classe "news"....

    Merci d'avance, c'est peut être tout con mais je ne maîtrise pas assez la gestion des chaînes récupérées avec file_get_contents... ou alors je suis partie sur la mauvaise voie ...

    Help

    Merci d'avance
    • Partager sur Facebook
    • Partager sur Twitter
      26 novembre 2012 à 9:58:26

      Bonjour,

      tu peux essayer avec simpleXML:

      <?php
      $txt=<<<LOD
      <body>
      <div class="du_contenu">Des trucs qui ne m'intéressent pas</div>
      <div class="news"> La dernière news... celle qui m'intéresse</div>
      <div class="news"> L'avant dernière news... qui ne m'intéresse pas</div>
      <div class="news"> L'avant avant dernière news... qui ne m'intéresse pas</div>
      </body>
      LOD;
      $xml=simplexml_load_string($txt);
      
      $divnews = $xml->xpath("//div[@class='news']");
      $result = array_shift($divnews);
      
      echo ($result);
      
      ?>
      
      • Partager sur Facebook
      • Partager sur Twitter
        26 novembre 2012 à 9:59:35

        Essaie ce code :

        <?php
        mb_eregi('<div class="news">(.*)', $file, $news);
        $news = explode('</div>', $news[0]);
        $news = str_replace('<div class="news">', '', $news[0]);
        
        echo $news;
        ?>
        
        • Partager sur Facebook
        • Partager sur Twitter
          26 novembre 2012 à 20:03:37

          Merci vous deux pour vos réponses...
          J'ai utilisé la solution de Chroma

          Maintenant j'ai les données que je voulais... un autre problème est apparu :
          Quand la news contient des images j'obtiens une ligne de code avec un lien relatif de l'image, ce lien est relatif à l'architecture du site sur lequel je récupère la news. Vous voyez un moyen simple pour régler ce problème ?

          Je me relis et je me rends compte que je ne suis pas clair, alors... exemple :
          Site d'origine de la news :
          <div class="news">
          <p> Bla bla bla super intéressant</p>
          <img src="/images/jolie-photo.jpg"/>
          </div>
          


          J'importe le contenu de la DIV avec la méthode de Chroma puis avec la fonction echo() l'intègre à mon site.

          Mon site :
          <div class="news-import">
          <h4> Les dernières news de notre partenaire</h4>
          <div class="news">
          <p> Bla bla bla super intéressant</p>
          <img src="/images/jolie-photo.jpg"/>
          </div>
          </div>
          


          Mais forcément sur mon serveur je n'ai pas de dossier "images" contenant le fichier "jolie-photo.jpg"...
          Je voudrais trouver un moyen de remplacer le chemin relatif par un chemin absolu

          Des idées
          • Partager sur Facebook
          • Partager sur Twitter
            27 novembre 2012 à 9:38:28

            Même méthode, rien ne change.

            <?php
            mb_eregi('src=(.*)', $div, $img);
            $img = explode('"', $img[0]);
            
            echo $img = 'tonsite' . $img[1];
            ?>
            


            • Partager sur Facebook
            • Partager sur Twitter
              31 mars 2017 à 22:03:45

              Salut à vous, et désolé de deterrer ce sujet, il viens de me servire, et j'aurais aimer savoir comment modifié le code de Chroma pour qu'il n'affiche pas seulement une seul NEWS, mais toute ? (ou plusieurs) ? merci.
              • Partager sur Facebook
              • Partager sur Twitter

              Récupérer le contenu d'une DIV (externe)

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown