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