magpierss et doublons

dudo
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 456
Inscription: 10 Jan 2004

magpierss et doublons

Message le Lun Mai 04, 2009 13:25

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: Tout sélectionner


<?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;
}
?>


UsagiYojimbo
WRInaute accro
WRInaute accro
 
Messages: 8575
Inscription: 23 Nov 2005

Re: magpierss et doublons

Message le Lun Mai 04, 2009 14:13

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.

dudo
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 456
Inscription: 10 Jan 2004

Re: magpierss et doublons

Message le Lun Mai 04, 2009 16:46

UsagiYojimbo a écrit: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 ?


UsagiYojimbo
WRInaute accro
WRInaute accro
 
Messages: 8575
Inscription: 23 Nov 2005

Re: magpierss et doublons

Message le Lun Mai 04, 2009 17:00

Code: Tout sélectionner
<?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

dudo
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 456
Inscription: 10 Jan 2004

Re: magpierss et doublons

Message le Lun Mai 04, 2009 17:53

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


UsagiYojimbo
WRInaute accro
WRInaute accro
 
Messages: 8575
Inscription: 23 Nov 2005

Re: magpierss et doublons

Message le Lun Mai 04, 2009 19:41

You're welcome !


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité