10年以上前に、自サイト用にちゃちゃっと作ってたRSSリーダー機能↓
⇒PHPでMagpieRSSを使ってRSSリーダ作成し、トップページに埋め込みました!
が…ヤフーブログがhttps化された事でヤフーブログのrssを読み込みできない問題が発生!
当時使った古い「MagpieRSS」ライブラリが更新されてなくhttps対応がそのまま無理だったので
https対応でキャッシュ機能もある「rss-php」ライブラリを利用しプログラムを書き換えました
基本的な処理はそのままで、変更点は
require_once './Feed.php';
まず「rss-php」ライブラリの読み込み
// キャッシュの設定
Feed::$cacheDir = './cache';
Feed::$cacheExpire = '1 hours';
キャッシュの設定を追加
$feed = new Feed ;
$rss = $feed->load($rssurl[$i]);
フィードの読み込みを変更
上記程度で、変数や処理はそのまま再利用できて30分程度で無事にリプレースできましたよ
今度ヤフーブログを更新して、自サイトのトップページに表示される事を確認しますかね~
参考までに↓ソースも公開しとくか…10年以上前に作った処理で結構てきとうですが(汗)
<?php
//=======================================================================
// システム名 楽しみながら攻めつづける!
// プログラムID rss.php
// 作成者 山下 アキラ
// 作成日 2006/10/18
// 処理概要 複数RSSファイル対応でまとめて更新順表示するRSSリーダー
//
// 修正履歴 2006/10/19 ソート用配列には過去1ヵ月分の記事を対象
// 2006/10/20 全件表示の際に、登録済のブログ一覧も表示
// 2007/01/24 トップページ表示には、インテリ更新情報を表示
// 2008/08/24 アメブロのRSSに広告が入ったので非表示対策
// 2017/07/07 ヤフーブログがhttps化されMAGPIE→rss-phpへ
//=======================================================================
if (!ini_get('date.timezone')) {
date_default_timezone_set('Asia/Tokyo');
}
require_once './Feed.php';
// キャッシュの設定
Feed::$cacheDir = './cache';
Feed::$cacheExpire = '1 hours';
$maxnum = $_GET["maxnum"]; //指定された場合の表示数
//RSSファイルのURL(複数可)
$rssurl = array() ; //初期化
//$rssurl[] = "http://rssblog.ameba.jp/yamasita-94nsr/rss.html"; //楽しみながら、飲みつづける!
$rssurl[] = "https://blogs.yahoo.co.jp/yamasita_94nsr/rss.xml"; //楽しみながら、攻めつづけたい・・・
$rssurl[] = "https://blogs.yahoo.co.jp/mimikaki2000/rss.xml"; //mimikaki監督の部屋 Ⅱ
$rssurl[] = "https://blogs.yahoo.co.jp/nistking/rss.xml"; //blogs.yahoo.co.jp/nistking
$rssurl[] = "https://blogs.yahoo.co.jp/amasadanobu/rss.xml"; //チュンピー日記
$rssurl[] = "https://blogs.yahoo.co.jp/wainsr/rss.xml"; //バイク小屋-NSR250R他!-NSR野朗
$rssurl[] = "http://moto-eng2.seesaa.net/index20.rdf"; //湘南藤沢のバイクショップ日記2 別館
$rssurl[] = "http://shochan88nsr.blog120.fc2.com/?xml"; //正ちゃんミュージアム別館
$rssurl[] = "http://blog.livedoor.jp/yamaharacing/index.rdf"; //MotoGPニュース紹介と雑感
$rssurl[] = "http://www.honda.co.jp/rss/motor.xml"; //【バイク】Hondaウェブサイト新着情報
$rssurl[] = "http://www.honda.co.jp/motorsports/rss/motorsports.rdf"; //【モータースポーツ】Hondaウェブサイト新着情報
$rssurl[] = "http://bphkkokura.exblog.jp/index.xml"; //「08CBR楽しすぎる!の山下店長ブログ」の更新情報
$myblog = 1; //RSSファイル内の自分のブログ数(上から~何個)
$bikenews = 4; //RSSファイル内のバイクニュース数(下から~何個)
//複数のブログ情報をまとめる配列
$blogarray = array() ; //初期化
//複数のRSS情報をまとめる配列
$rssarray = array() ; //初期化
//表示件数指定の場合は、NSRオーナーブログのみ
if ($maxnum != "") {
$rss_num = count($rssurl);
} else {
$rss_num = count($rssurl) - $bikenews;
}
for ($i=0;$i<$rss_num;$i++) {
$feed = new Feed ;
$rss = $feed->load($rssurl[$i]);
//ブログタイトル(文字コード:UTF-8⇒EUC)
$blogtitle = htmlSpecialChars($rss->title);
$blogtitle = mb_convert_encoding($blogtitle, "EUC-JP", "auto");
//ブログURL
$blogurl = htmlSpecialChars($rss->link);
//ブログへのリンクした文字列作成
$bloglink = "<a href=\"{$blogurl}\" target=\"blog\">{$blogtitle}</a>";
//ブログ用の配列に挿入
$blogarray[] = $bloglink;
foreach ($rss->item as $item) {
//記事タイトル(文字コード:UTF-8⇒EUC)
$title = htmlSpecialChars($item->title);
$title = mb_convert_encoding($title, "EUC-JP", "auto");
//記事URL
$url = htmlSpecialChars($item->link);
//記事更新日時(UNIXのタイムスタンプ型⇒年月日)
$date_timestamp = (int) $item->timestamp;
$date = Date("〔Y年n月j日 H:i〕",$date_timestamp);
//記事へのリンクした文字列作成
if ($i < $myblog) { //自分のブログの場合は「~更新しました!」
$linkstr = "<a href=\"$url\" target=\"blognew\"><b>{$blogtitle}</b>を更新しました! {$title}</a> {$date}";
} else { //他オーナーさんの場合は「~更新されてます」
$linkstr = "<a href=\"$url\" target=\"blognew\"><b>{$blogtitle}</b>が更新されてます! {$title}</a> {$date}";
}
//3ヶ月以内の記事なら…ソート用の配列に挿入(配列のキーはタイムスタンプ型の更新日時)
$monthly_timestamp = mktime(date(G), date(i), date(s), date("m")-3, date("d"), date("Y"));
if ($date_timestamp > $monthly_timestamp) {
$rssarray["{$date_timestamp}"] = $linkstr;
}
}
}
krsort($rssarray); //連想配列をキー(記事更新日時:タイムスタンプ型)で降順にソート
if ($maxnum != "") {
$newnum = $maxnum; //ページへの表示件数(引数での指定数)
} else {
$newnum = count($rssarray); //ページへの表示件数(配列数)
}
$count = 0; //カウント用 初期化
//ページに表組として表示
for(reset($rssarray); $key=key($rssarray); next($rssarray)){
print "
<tr>
<td valign=\"top\"><font color=\"#FF9966\" size=\"2\" class=\"font2\">●</font></td>
<td><font size=\"2\" class=\"font2\">$rssarray[$key]</font></td>
</tr>
";
$count++;
if ($count == $newnum) { //表示件数になったらループから抜ける
break;
}
print "
<tr><td colspan=\"2\"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\" summary=\" \">
<tr><td><img border=\"0\" src=\"/img/dum.gif\" width=\"1\" height=\"5\" alt=\"\"></td></tr>
<tr><td bgcolor=\"#C0C0C0\"><img border=\"0\" src=\"/img/dum.gif\" width=\"1\" height=\"1\" alt=\"\"></td></tr>
<tr><td><img border=\"0\" src=\"/img/dum.gif\" width=\"1\" height=\"5\" alt=\"\"></td></tr>
</table></td></tr>
";
}
//登録済のブログ数
$blognum = count($rssurl) - $bikenews;
//表示件数指定の場合は、全件へのリンク
if ($maxnum != "") {
/*
print "
<tr>
<td valign=\"top\"></td>
<td align=\"right\"><font size=\"2\" class=\"font2\"><a href=\"link/blognew.html\">⇒過去1ヶ月分のNSRオーナーブログ更新情報を見る!(登録ブログ数:{$blognum}件)</a></font></td>
</tr>
";
*/
//表示件数指定が無い場合には、登録済のブログを表示
} else {
print "
<tr><td colspan=\"2\"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\" summary=\" \">
<tr><td><img border=\"0\" src=\"/img/dum.gif\" width=\"1\" height=\"5\" alt=\"\"></td></tr>
<tr><td bgcolor=\"#C0C0C0\"><img border=\"0\" src=\"/img/dum.gif\" width=\"1\" height=\"1\" alt=\"\"></td></tr>
<tr><td><img border=\"0\" src=\"/img/dum.gif\" width=\"1\" height=\"5\" alt=\"\"></td></tr>
</table></td></tr>
<tr>
<td valign=\"top\"><font color=\"#FF9966\" size=\"2\" class=\"font2\"><b>※</b></font></td>
<td><font size=\"2\" class=\"font2\"><b>更新情報を表示しているNSRオーナーブログ数は現在{$blognum}件です。</b><br>
";
for($i=0; $i<$blognum; $i++){
$j = $i+1;
print " {$j}:{$blogarray[$i]}<br>\n";
}
print "
</font></td>
</tr>
";
}
?>