« Special dealsなiPod mini買っちゃった | メイン | marimekko unikko iPod miniケース »
2005年03月09日
Magpie RSS
仕事で作っているサイトでRSS配信を始めた、と数日前のエントリーに書きましたが、それとは反対に、今度はRSSからHTML表示するプログラムを作成してみました。
流れとしては以下のような感じ。
1.更新情報は全てMySQLに入れてしまって、情報追加毎にRSSを作成。
2.上記で作成したRSSを読み込み更新情報ページを表示
普通なら、自分のサイトなのにわざわざRSSを読み込まずにMySQLから直接更新情報を取得すればいいのですが、あえて、RSSから読み込むことにしました。それはRSSを表示する環境を作っておくと後々便利だなと思ったからもありますが、それ以上に、BlogPeopleのようなものを自分でやってみたいという好奇心の方が強いかも。
RSSからHTML化するには全て自分でプログラムを書くこともそれほど難しくはありませんが、通常はXMLパーサやRSSパーサといった汎用的なプログラムを使います。
で、今回使ったのがPHPのRSSパーサとしてはおそらく一番有名なMagpie RSS。
簡単です。はっきり言って、これ使えばPHPの知識など無くても他サイトのRSSを取得して表示することが可能です。
ブログでサイドバーに任意のRSSを表示させるのも、BlogPeople等を使わずに手軽に表示させることができます。
MagpieRSS - PHP で使える RSS パーサー。
という日本語のわかりやすいページがあってワタクシごときがあんまり説明することもないので、実際にMYCOM PC WEBのRSSを取得して表示するサンプルスクリプトなどを書いてみます。
/*サンプルここから*/
<?php
require_once 'rss_fetch.incへのパス';
$url = 'http://pcweb.mycom.co.jp/haishin/rss/index.rdf';
$rss = fetch_rss($url);
$title = $rss->channel['title'];
$title = mb_convert_encoding($title, "euc", "auto");
$link = $rss->channel['link'];
print "<h2><a href=\"${link}\">$title</a></h2>\n";
print "<dl>\n";
foreach ($rss->items as $item ) {
$title = $item['title'];
$title = mb_convert_encoding($title, "euc", "auto");
$url = $item['link'];
$itemday = date('Y/n/j',strtotime(substr($item['dc']['date'],0,10)));
$youbi = array(0 => '(日)', 1 => '(月)', 2 => '(火)', 3 => '(水)', 4 => '(木)', 5 => '(金)', 6 => '(土)');
$mday = date('w',strtotime(substr($item['dc']['date'],0,10)));
$itemtime = date('G:i',strtotime(substr($item['dc']['date'],11,8)));
print "<div class=\"part\"><dt>${itemday} $youbi[$mday] ${itemtime}</dt><dd><a href=\"$url\">$title</a></dd></div>\n";
}
print "</dl>\n"
?>
/*サンプルここまで*/
これだけ。チョー簡単ですね。
前述MagpieRSS - PHP で使える RSS パーサーで書かれていたサンプルスクリプトに多少追記しています。
W3CDTFを変換するのをどうしようかちょっと悩みましたが、とりあえず、日付と時間を文字位置で取得するようにしました。
これを実際に組み込んだものがこれです。
注意点としてはMagpieRSS - PHP で使える RSS パーサーのコメントにも書かれていますが、現在最新版である0.71では日本語が文字化けします。回避策として古い0.61のrss_parse.incを上書きインストールします。
投稿者 Utayume : 2005年03月09日 13:22| 04 Blog /05 Work(Perl, PHP, etc)
AD






トラックバック
このエントリーのトラックバックURL:
http://ondes-martenot.info/MT/mt-tb.cgi/364
このリストは、次のエントリーを参照しています: Magpie RSS:
» MagpieRSS を応用すると色々出来る from nJOY BLOG
4月11日の記事に引き続き「MagpieRSS」について。
nJOY のトップページに表示させるだけなら前回のスクリプトで満足していますが、応用すればこんな事... [続きを読む]
トラックバック時刻: 2005年04月21日 18:44
» エラってる、エラってる! from からまんブログ
からまんのトップページには、ここのブログの最新投稿が5件表示されるようになっておるのですが、コレにはMagpie RSSなるものを使っておりますです。RSSパー... [続きを読む]
トラックバック時刻: 2005年08月04日 23:54
» MagpieRSS from ひな。小屋:にっき
本家の「ひな。小屋」のトップに、この日記の最新情報を載せるにあたって、
以下のサイトを参考にさせていただきました。
やっと思い通りの表示になりました。... [続きを読む]
トラックバック時刻: 2006年01月19日 11:02
» 音ログを埋め込みRSSリストで表示する from MILKrepes
このサイトに切り替えてから、音ログを利用して、管理人が現在視聴している音楽情報を... [続きを読む]
トラックバック時刻: 2006年08月06日 11:46
コメント
MagpieRSS を検索していて訪れました。
RSS2で使用されている、RFC822形式の$pubdateはどのように加工してMysqlDBに挿入していますか?
おしえてください。
投稿者 カイドウ : 2005年08月05日 15:55
カイドウさん、コメントありがとうございます。
ここで書いたプログラムでは、MySQLへインサートする日付データはRSSのものではなく、PHPのdate関数を使い「date('Y-m-d H:i:s')」として取得した日時です。
もしRSSの日時をデータベースにインサートするならば、時差を統一する必要がありますね。日本国内のRSSしか扱わないのであれば、JSTで決め撃ちしてしまっても良いと思います。具体的な方法は実際にやったことがないので即答はできませんが、難しくはないと思います。
あまり回答になっていなくてすいません。
投稿者 うた夢
: 2005年08月06日 01:10
コメントしてください
AD





