2

Simplepie を使用して、RSS ニュース フィードを 1 つのメイン サイトにフィードする複数のブランチ サイトがあります。これはうまくいきます。唯一の問題は、複数のブランチが同じニュース記事を投稿し、メイン サイトに複数のニュース記事が表示される場合があることです。重複を削除するにはどうすればよいですか?

<?php
require_once(ABSPATH .'php/simplepie.inc');
$feed = new SimplePie();

$feed->set_feed_url(array(

'http://www.branch1.com/feed/',
    'http://www.branch2.com/feed/',
    'http://www.branch3.com/feed/',
    'http://www.branch4.com/feed/',

));

$feed->set_favicon_handler('handler_image.php');
$feed->init();
$feed->handle_content_type();


foreach ($feed->get_items() as $property):

    // I want this to be unique
    echo $property->get_title();

endforeach;
?>

私はすでに試しました。運がない。

foreach (array_unique($unique) as $property):

また、一致するタイトルを探すために 2 番目の foreach を実行しようとしました。そして、それらの隣に番号1または最初の一致があるもののみを表示します...しかし、それは代わりに私に一致の量を与え続けました:

1.Match0 1.Match1 2.Match1 3.Match1 1.Match2 2.Match2 ect ...

foreach ($feed->get_items() as $property):

 $t = $property->get_title();
 $match = 0;

foreach ($feed->get_items() as $property2): 
  $t2 = $property2->get_title();

  if ($t == $t2){
   $match++;
   //echo $match;
      }

    if ($match <= 2){echo "$match. $t <br/> ";}

    endforeach;

endforeach;
4

1 に答える 1

4

取得したアイテムをタイトルのキーを持つ別の配列に入れて、重複したタイトルが配列内で上書きされるようにしてください。次に、配列からコンテンツをプルバックします。

$arrFeedStack = array();
foreach ($feed->get_items() as $property):
    $arrFeedStack[$property->get_title()] = $property->get_description();
endforeach;

foreach ($arrFeedStack as $item) {
    echo $item . <br />;
}
于 2012-08-27T05:37:39.777 に答える