PHPでブログの最新記事をRSSで取得しホームページに貼り付ける。
私はこの楽天ブログ(けむしろうの部屋別館)の他に、個人のホームページ(けむしろうの部屋本館)を持っています。以前は近況を本館の方に書いていたのですが、ブログを始めてからはその便利さに負けて近況についてはすべてブログを利用しています。かといって自分のホームページにもせめて最新の近況のいくつか載せておきたいと思い、いまや多くのブログで採用されているRSSを利用して最新記事を自動取得し、本館の方に表示することにしました。幸い現在利用しているレンタルサーバ(さくらインターネット)ではPHPが使えるため、PHPによるRSSデータ処理ライブラリを導入してRSS記事を取得することにします。今回導入したRSSデータ処理ライブラリはフリーソフトの「MagpieRSS」です。作成者は日本人ではありませんが、マルチバイト文字も扱えるので日本語も問題なく通ります。私の行った作業を備忘録として書いておきます。何かの参考になる方もいらっしゃるかもしれません。できあがったものは「けむしろうの部屋」のトップページ(index.php)で、このページの近況のところに最新の記事5件分を表示されていることで確認できます。 MagpieRSSをダウンロードする。 公式サイトのページ上部にある「DOWNLOAD」のところをクリックし、適当なミラーサイトから最新版をダウンロードします。 私はmagpierss-0.72.tar.gzをダウンロードしました。 magpierss-0.72.tar.gzを展開してインストールする。 これから作りたいindex.phpのあるディレクトリ直下にmagpierssという名前のディレクトリを作成して、以下のファイルとディレクトリをその下にコピーする。 rss_utils.inc rss_cache.inc rss_fetch.inc rss_parse.inc extlib/Snoopy.class.inc index.phpの先頭に以下のPHPプログラムを記述する。<?php require_once('magpierss/rss_fetch.inc'); define('MAGPIE_OUTPUT_ENCODING', 'UTF-8'); $count = 5; $length = 60;?>なお最初の2行だけが必須です。$count変数は表示する最新日記の件数、$lengthは表示する日記記事の最大文字数です。 RSS記事をフェッチして必要なデータを表示する。私の場合は記事の日付、タイトル、記事内容の一部だけが必要でしたので、以下のようなコードを書きました。$url = 'http://api.plaza.rakuten.ne.jp/kemusiro/rss/';$rss = fetch_rss($url);echo "<ul>";array_splice($rss->items, $count);foreach ($rss->items as $item) { $href = $item['link']; $title = mb_convert_encoding($item['title'], "SJIS", "auto"); $date = date('Y/m/d H:i:s', parse_w3cdtf($item['dc']['date'])); $description = mb_convert_encoding($item['description'], "SJIS", "auto"); if (mb_strlen($description) > $length) { $description = mb_strcut($description, 0, $length) . "..."; } echo "<li>"; echo "<FONT color=\"#ff8040\">(" . $date . ")</FONT> "; echo "<a href=$href>" . $title . "</a><BR>"; echo $description . "</li>";}echo "</ul>";取得したいRSSデータのURLを1行目で指定し、2行目でRSSデータを取り込みます。後は必要なデータに応じて$rss変数のフィールドを参照してください。RSSデータとして保存されている日付のフォーマットはW3Cフォーマットですが、このフォーマットは少し少し見辛いので、見慣れたフォーマットに変換するために私のプログラムではparse_w3cdtfメソッドを利用してフォーマット変換しています。また文字コードをUTF-8からSJISに変換するためにmb_convert_encodingメソッドを利用しました。その他、文字色や箇条書きなどにするために適当にHTMLタグを記述しています。こんな感じで意外と簡単にできました。MagieRSSの作者に大感謝です。なおRSS1.0の仕様はこちらから参照できます。