いくつかのブランドサイトがあって、それぞれのキャンペーン情報や投稿をまとめて企業サイトにも表示したい。みたいな時に使える方法。
今回は複数のWordpressサイトのRSSを探してきてまとめてみます。
RSSアイコンを表示してるサイト、してないサイトもありますが、基本投稿があれば自動で生成されてるはずなのでサイトURLのあとに「/feed」をつけてあげればOKなはず。
https://pink-panda.me/feed
みたいな感じ。
RSSが見つからなかったら
このサイトとかで無料で、RSSを取得したいサイトのURLを入れて存在してれば教えてくれます。
こんな感じ!
まずはRSSを取得して表示してみる
// RSSフィードからRSS取得
$feed1 = file_get_contents('https://pink-panda.me/feed');
// XML解析するための不正文字削除
$characters = '/[^\x9\xa\x20-\xD7FF\xE000-\xFFFD]/';
$feed1 = preg_replace($characters, '', $feed1);
// 文字列をXMLとして解析して、SimpleXMLElementクラスのインスタンスに変換
$rss1 = simplexml_load_string($feed1);
foreach($rss1->channel->item as $item){
print "<a href='".$item->link."' target='_blank'>"$item->title."</a> | ".date("Y年 n月 j日", strtotime($item->pubDate))."<BR>".strip_tags($item->description)."<hr>";
}
こんな感じで表示できる↓
PHPで複数のRSSをまとめて、更新時間順で並べて表示したい | 2020年12月17日いくつかのブランドサイトがあって、それぞれのキャンペーン情報や投稿をまとめて企業サイトにも表示したい。みたいな時に使える方法。 今回は複数のWordpressサイトのRSSを探してきてまとめてみます。 RSSアイコンを表示してるサイト、してないサイトもありますが、基本投稿があれば自動で生成されてるはずなのでサイトURLのあとに「/feed」をつけてあげればOKなはず。 https://pink-p
複数のfeedを読み込む
あとは上記の処理を複数化してあげれば良いだけ。
無駄にわかりやすく書きます。
$feed1 = file_get_contents('https://pink-panda.me/feed');
$feed2 = file_get_contents('https://blue-panda.me/feed');
$feed3 = file_get_contents('https://yellow-panda.me/feed');
$feed4 = file_get_contents('https://black-panda.me/feed');
$characters = '/[^\x9\xa\x20-\xD7FF\xE000-\xFFFD]/';
$feed1 = preg_replace($characters, '', $feed1);
$feed2 = preg_replace($characters, '', $feed2);
$feed3 = preg_replace($characters, '', $feed3);
$feed4 = preg_replace($characters, '', $feed4);
$rss1 = simplexml_load_string($feed1);
$rss2 = simplexml_load_string($feed2);
$rss3 = simplexml_load_string($feed3);
$rss4 = simplexml_load_string($feed4);
$R1site = "ピンクパンダ";
$R2site = "ブルーパンダ";
$R3site = "イエローパンダ";
$R4site = "ブラックパンダ";
$title = array();
$date = array();
$link = array();
$site = array();
foreach($rss1->channel->item as $item){
$title[] = $item->title;
$date[] = date("Y年 n月 j日", strtotime($item->pubDate));
$link[] = $item->link;
$site[] = $R1site;
}
foreach($rss2->channel->item as $item){
$title[] = $item->title;
$date[] = date("Y年 n月 j日", strtotime($item->pubDate));
$link[] = $item->link;
$site[] = $R2site;
}
foreach($rss3->channel->item as $item){
$title[] = $item->title;
$date[] = date("Y年 n月 j日", strtotime($item->pubDate));
$link[] = $item->link;
$site[] = $R3site;
}
foreach($rss4->channel->item as $item){
$title[] = $item->title;
$date[] = date("Y年 n月 j日", strtotime($item->pubDate));
$link[] = $item->link;
$site[] = $R4site;
}
// 多次元配列化
$ALL = array($title,$date,$link,$site);
// ここで更新時間ソート
array_multisort(array_map("strtotime", array_column( $ALL, "1" )), SORT_ASC, $ALL);
// RSSの記事数カウント
$count = count($title);
for($i=0;$i<$count;$i++){
print "【".$ALL[3][$i]."】<a href='".$ALL[2][$i]."' target='_blank'><B>".$ALL[1][$i]."</B></a> | ".$ALL[0][$i]."<HR>";
}
こうすることで↓こんな感じで出せるようになる。
【ピンクパンダ】 パンダが動物園から脱走 | 2020年 12月 9日【ブルーパンダ】 ついにブルーパンダ登場 | 2020年 11月 30日
【ブラックパンダ】 やさぐれが止まらない | 2020年 10月 13日
【イエローパンダ】 みかんの食べ過ぎ注意 | 2020年 8月 17日