Magpierss et doublons

WRInaute impliqué
Bonjour,

Nombreux sont ceux qui connaissent la classe magpierss, je voudrais savoir
si certains ont trouvé le moyen d'éviter les doublons, sans passer par
un bdd. Plus précisément, en ce qui me concerne je parse notamment un flux ou $titre n'est jamais le
même mais ou la même $description peut revenir plusieur fois, je voudrais donc dans ce cas précis
éviter plusieurs fois l'affichage de la même description et ne reprendre que le titre.

Merci pour vos idées
ludo

Code:
<?php
// inclusion de la classe magpierss  
require_once("../../magpierss/rss_fetch.inc");

function FeedParser($url_feed, $nb_items_affiches=5)
{
  // lecture du fichier distant (flux XML)
  $rss = fetch_rss($url_feed);
  
  if (is_array($rss->items))
  {
    // on ne recupere que les elements les + recents
    $items = array_slice($rss->items, 0, $nb_items_affiches);
   
  //--- version améliorée coupure à la hauteur de l'espace mot + trois 

    $html = "<div class=mnutabla>\n";

    // boucle sur tous les elements
    foreach ($items as $item)
    {
      $description = $item['description'];
     $max=290;  
     if(strlen($description)>=$max){$description=substr($description,0,$max); $espace=strrpos($description," "); $description=substr($description,0,$espace)."..."; }
     $descriptiona=substr($description,0,$espace)."...";
 
     $html .= "<ul class='p'><li><a href=\"".$item['link']."\">";
     $html .= $title."</a> : ";
     $html .="".$description."</li></ul><br />";

    }
    $html .= "</ul>\n";
  }

  return $html;
}
?>
 
WRInaute accro
Tu peux créer un tableau intermédiaire dans lequel tu stockes les descriptions, et à chaque passage tu vérifie que la description en cours n'est pas déjà présente dans ce tableau. Si c'est le cas, tu vides la variable $description.
 
WRInaute impliqué
UsagiYojimbo a dit:
Tu peux créer un tableau intermédiaire dans lequel tu stockes les descriptions, et à chaque passage tu vérifie que la description en cours n'est pas déjà présente dans ce tableau. Si c'est le cas, tu vides la variable $description.

Merci, je ne comprend pas bien la démarche, chaque desciption sera forcément présente
dans le précédant tableau, tu n'as pas un exemple de code ?
 
WRInaute accro
Code:
<?php
// inclusion de la classe magpierss 
require_once("../../magpierss/rss_fetch.inc");

function FeedParser($url_feed, $nb_items_affiches=5)
{
  //initialisation du tableau inetrmediaire
  $tab_desc = array();
  // lecture du fichier distant (flux XML)
  $rss = fetch_rss($url_feed);
 
  if (is_array($rss->items))
  {
    // on ne recupere que les elements les + recents
    $items = array_slice($rss->items, 0, $nb_items_affiches);
   
  //--- version améliorée coupure à la hauteur de l'espace mot + trois

    $html = "<div class=mnutabla>\n";

    // boucle sur tous les elements
    foreach ($items as $item)
    {
      si la description en cours de parcours n'est pas déjà présente dans le tableau intermédiaire
      if (!in_array($item['description'],$tab_desc))
      {
            $description = $item['description'];
            array_push($tab_desc,$item['description']);
      }
      else
      {
            //sinon on vide la variable description
            $description = "";
      }
     $max=290; 
     if(strlen($description)>=$max){$description=substr($description,0,$max); $espace=strrpos($description," "); $description=substr($description,0,$espace)."..."; }
     $descriptiona=substr($description,0,$espace)."...";

     $html .= "<ul class='p'><li><a href=\"".$item['link']."\">";
     $html .= $title."</a> : ";
     $html .="".$description."</li></ul><br />";

    }
    $html .= "</ul>\n";
  }

  return $html;
}
?>

A tester
 
WRInaute impliqué
Chapeau pour l'idée ! le code fonctionne très bien et
je ne voyais pas comment résoudre ce probleme sans
passer par une bd
merci
ludo
 
Discussions similaires
Haut