« 「最近の気になるブックマーク」や「ソーシャルブックマークへのボタン」とかを色々つけてみた | メイン | iPhone VS AndroidはとりあえずiPhone大幅リードか? »

2009年5月16日

PHPにおけるRSSリーダーの作り方について(PHP4対応)


このエントリーをはてなブックマークに追加 Clip to Evernote
PHPで自家製RSSリーダーを作って、無料Webサービスで作ったデータを自分のホームページへまとめてみましょう!

 ・外部無料サービスで作ったデータを融合しよう!

最近はネットを利用した無料サービスが本当に多くなりました。
例えば

ブログ:アメーバブログLivedoor Blog、(一言だけの)twitterなど...
写真の保存・公開:フォト蔵flickr携帯百景など...
ソーシャルブックマーク:はてなブックマークlivedoor clip!, Buzzurlなど...
スケジュール管理:Google Calendar (例:IT勉強会カレンダーの東海三県における抜粋)
学習:smart.fmなど...
サークル活動(SNS):So-net SNSなど

http://movapic.com/hiroshikuze/calendar
↑ 無料写真公開サイト携帯百景の例 ↑

ただ、いろんなサービスを利用してしまったので情報が分散しちゃっていませんか?
折角作ったのだから、なんとか自分のサイトへまとめて取り込めないものか・・・

サイトによっては「RSS」という最新の登録状況データを配布しています

↑RSSアイコンの例

そのデータを解析して、必要な部分を抜き出して、自分のサイトに合うようデザインすれば、こういったサイトへの最新まとめページを自動的に作成することができます。

私の場合ですと、昨日「Web制作/ソフト開発で役立ちそう」「・・・なことは別にないけど、これは見逃せない!」というページを片っ端からブックマークしている内容をブログのトップページに掲載するようにしました
この内容は、外部の無料ソーシャルブックマークサービス:はてなブックマークのRSSを取り込んで実現したものだったりします。

(下記のものは「最近の気になるブックマーク」の自動作成させてみた例です)

最近の気になるブックマーク

今回は私の「最近の気になるブックマーク」でも使用した、PHP(バージョンは4以降)を使ったRSSを取り込むソフト、自家製RSSリーダーの作り方をご紹介します。 

・RSSリーダーを作成する為に用意するもの

1) PHPバージョン4以降が動作するサーバー
2) RSSリーダー作成作業を大幅に簡略化するMagpieRSSライブラリ
3) 勿論取り込む元となるRSSデータ
4) PHPやHTML/CSSはそれなりご存知であることを前提に進めます

・つくりかた(用意の仕方)

1) 「俺のサーバーはPHPのバージョンいくつだ?」という方は以下のプログラムを実行させてください

<?php

phpinfo();

?>

※ファイル名は、test.phpとでもしてください。
※PHP5ならMagpieRSSを使わなくても標準でRSSデータを取り込むのに便利な命令があるらしいです。
が、知らん!

プロバイダーが提供している無料レンタルサーバは、使えなかったり使用に大幅な制限が掛かっているケースが多いので、その辺は各自なんとかしてください。

2) MagpieRSSライブラリは、MagpieRSS公式サイト(英語)からなんとか落としてください。

解凍するといろいろファイルやフォルダが出てきますが、使用するものは

extlibフォルダ
rss_cache.incファイル
rss_fetch.incファイル
rss_parse.incファイル
rss_utils.incファイル

これに 空のcacheフォルダ を付け加えて使用します。

で、適当なフォルダにまとめてアップ
その後cacheフォルダのみ属性を777にしてください。

3) 次に、くじぇ工作所オリジナルのMagpieRSS向けクラス、RSSreaderlib.phpのソースコードをダウンロードして、これも適当な場所に上げてください。

MagpieRSSをRSSreaderlib.phpと絡めて使うことによるメリットは以下の通り

・複数のRSSデータをまとめて最新のもののみ取り出すことが可能

・RSSには、ATOM / RSS1.0 / RSS2.0等がありますが、この3種類程度ならデータを同じ処理で扱えます。

・文字コードの変換作業とかまとめて対応

・MagpieRSSからロードしたデータをfor文より取り出しやすい形に変換

・他のサイトのMagpieRSS解説ページを読まなくて良い(このページでは、この先RSSreaderlib.phpについて説明します)

なお、テスト回数が少ないのでバグがあればご指摘ください。

4) RSSreaderlibを呼び出してRSSをロードした後、自分のサイトのデザインに合うよう表示するPHPプログラムを組みます。

なお、つねづね思ふことトップページ「最近の気になるブックマーク」の場合は、下記のような感じで組んでいます。
※<<ほにゃらら>>の部分をあなたのサイトに合わせてください

 


<?php
require_once "<< RSSreaderlib.phpへのパス >>";
$RSSReader = new RSSReader(
'<< 出力する文字コード(sjis/euc/utf-8など) >>',
'<< MagpieRSS内のrss_fetch.incへのパス >>',
'<< ロードするRSSのURL(例: http://b.hatena.ne.jp/halohalolin/rss )>>'
);
?>

最近の気になるブックマーク "; $max = ($RSSReader -> getContentsCount() > 5) ? 5: $RSSReader -> getContentsCount(); for($i = 0; $i < $max; $i++) { echo "
  • getContentsURL($i)."\">".$RSSReader -> getContentsTitle($i)."
    " .$RSSReader -> getContentsDesc($i)."
  • "; } echo ""; ?>

     

    プログラム解説しますと

    3行目:RSSReader(出力文字コード, rss_fetch.incの位置, ロードするRSSのURL)

    は、コンストラクタでRSSをロードする等、初期化を担当しています。

    複数のRSSをロードしたい場合は、
    RSSReader(出力文字コード, rss_fetch.incの位置, RSSのURLその1, RSSのURLその2...)
    と、付け加えてください。

    ※ただし、数が多くなると当然重くなります。スレッドとかの処理分散は全くやっとりません。

    これで、変数RSSReaderにRSSのオブジェクトデータが入るので、以下ここからデータを呼び出します。

    21行目:getContentsCount()で、入っているRSSの件数を調べることができます。
    この値を参考に表示する件数を指定します。

    23〜24行目:記事のタイトル、URL、概要(はてなブックマークの場合は自分でつけたコメント)は、getContentsURL($i)、getContentsTitle($i)、getContentsDesc($i)で呼び出します。

    ※$iには、最新のものから何件目かを指定

    5) HTMLから呼び出すのであれば、SSIでも使って <!--#include virtual="RSSreaderlib.php" --> と呼び出してください。

    完成

    ・おわりに

    なお、RSSreaderlib.php 及び bookmark.php について使用は無料で、商用使用に制限はかけません。
    ※ただ、何らかの機会があればこのページを紹介していただいたら嬉しいです。

    ご意見ご感想、バグ報告等あればジグソーTools掲示板などにご連絡ください。

    PHPによるWebアプリケーションスーパーサンプル 第2版
    西沢 直木
    ソフトバンククリエイティブ
    売り上げランキング: 5451
    おすすめ度の平均: 4.5
    3 内容自体は良いが、構成に難有り
    4 まぁまぁ
    5 良いですね
    5 非常に便利な本です
    5 初心者だからこそ・・・

    ◇ ◆ お知らせ ◇ ◆

    『Store / つねづね思ふこと - ○本)PHP開発』について
    PHPのプログラミングをするからには、是非手元に置きたい本を揃えてみました。

    >>『Store / つねづね思ふこと - ○本)PHP開発』を拡大して覗いてみる

    投稿者 kuze : 2009年5月16日 14:29


    ■このエントリーに関連した記事

    ■「実用ソフト&サイト」カテゴリの最新記事


    « 「最近の気になるブックマーク」や「ソーシャルブックマークへのボタン」とかを色々つけてみた | メイン | iPhone VS AndroidはとりあえずiPhone大幅リードか? »




    トラックバック

    このエントリーのトラックバックURL:
    http://kuze.tsukaeru.jp/tsunezune/movabletype/mt-tb.cgi/31

    コメント

    コメントしてください




    保存しますか?


    Edit  
    くじぇ工作所サイトマップ

    このサイトについて
    © Copyright Hiroshi Kuze 1996-2017 ( hiroshikuze@gmail.com ).

    Analyzed by efStat Analyzed by Log_on! WEBCLICKERS.NET 人気blogランキング