Page 1 sur 1

Supprimer doublons dans un flux RSS

Posté : 07 mars 2014, 04:32
par Abracadaboum
Bonsoir,

J'utilise actuellement un script pour afficher un flux RSS dans un wordpress.
Le souci est que j'ai pu constater qu'il n'est pas rare que dans le flux il y ait des doublons. Le script n'y est pour rien, il s'agit de la source.
Je cherche donc à améliorer le script afin qu'il supprime automatiquement les doublons voire triplons!

Voici la portion concernée:
    include_once(ABSPATH . WPINC . '/feed.php');
    $rss = fetch_feed($feed_url);
    if (!is_wp_error($rss)) { // no error occurred
      $maxitems = $rss->get_item_quantity($number_of_items);
      // Build an array of all the items, starting with element 0 (first element).
      $rss_items = $rss->get_items(0, $maxitems);
      $output = '<div' . ((bool)$cssclass ? ' class="' . $cssclass . '"' : '') . '><ul>';
      if ($maxitems == 0) { // no items
        $output .= '<li>' . __('No feed items at this time. Please check back later.', JPGRF_LOCAL) . '</li>';
      } else { // there were items
        // Loop through each feed item and display each item as a hyperlink
	foreach ($rss_items as $item) {
	  $output .= '<li>';
	  $output .= '<div class="persorss"><a ' . ($opennewwindow ? ' onclick="window.open(this.href); return false;" onkeypress="window.open(this.href); return false;" ' : ' ') . ($nofollow ? 'rel="nofollow" ' : ' ') . 'href="' . esc_url($item->get_permalink());
	  $output .= '" title="">' . strip_tags($item->get_title()) . '</a><br />' . ($desc ? ' ' . substr($item->get_description(), 0, $numchars-1) : '') . '...</div></li>';
	} // end foreach
      } // end items check
      $output .= '</ul></div>';
    } // end error check
Je suis certain qu'il doit être assez simple de n'afficher qu'une fois un item qui se répète lors de la construction du tableau (à ce que j'en comprends) mais comment??
Mes recherches m'ont menées ici : http://www.php.net/manual/fr/function.array-unique.php
Mais bien qu'il soit mentionné dans le script qu'un tableau est construit je ne voit de "array" nulle part, du coup comment s'y prendre pour utiliser cette fonction??

Merci pour votre précieuse aide!!

Re: Supprimer doublons dans un flux RSS

Posté : 07 mars 2014, 10:53
par xTG
Tu as un array d'objet dans la variable $rss_items.
Par contre array_unique ne traite pas les objets il me semble.
Il te faudra redéfinir un opérateur de comparaison.

Re: Supprimer doublons dans un flux RSS

Posté : 07 mars 2014, 17:59
par Abracadaboum
Tu as un array d'objet dans la variable $rss_items.
Par contre array_unique ne traite pas les objets il me semble.
Il te faudra redéfinir un opérateur de comparaison.
Merci pour ta réponse xTG.

Si je comprends bien je dois donc vérifier si la valeur de chacun des items est identique.
Cela signifie il que le contenu de chacun des items peut-être considéré comme une valeur bien que ce soit des chaines de caractères contenant autre chose que des chiffres ou bien qu'il est préférable d'attribuer un numéro à chacun d'entre eux?...

Un peu comme si l'on disait
chaque item=0+1,+2,+3, etc...
puis si $item1==$item2 alors delete $item2

désolé pour ces questions si scolaires.......

Re: Supprimer doublons dans un flux RSS

Posté : 09 mars 2014, 11:09
par xTG
Une piste peut être sur la page de la doc de array_unique.
Regardes la solution de quecoder à base de array_count_values.