« ミッフィーのお財布 | メイン | Mac miniお持ち帰りできます。 »
2005年03月05日
RSS(1.0)作成PHPスクリプト
某仕事で作っているサイトでRSS配信を実装してみました。
本当はATOMでいきたいけど、仕様を詳しく調べるのもめんどくさかったので、日本でポピュラーと思われるRSS1.0で作ることにしました。
以下がその関数。
/*ここからサンプル関数*/
function createRSS($items,$savefile,$rssinfo){
//現在時刻
$nowtime = date("Y-m-d\TH:i:s+09:00");
$data .= <<<EOM
<?xml version="1.0" encoding="utf-8" ?>
<rdf:RDF
xmlns="http://purl.org/rss/1.0/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xml:lang="ja">
<channel rdf:about="${rssinfo['rssurl']}">
<title>${rssinfo['rsstitle']}</title>
<link>${rssinfo['rsslink']}</link>
<description>${rssinfo['rssdesc']}</description>
<dc:language>ja</dc:language>
<dc:creator>${rssinfo['rsscreate']}</dc:creator>
<dc:date>${nowtime}</dc:date>
<items>
<rdf:Seq>
EOM;
foreach($items as $item){
$data .= " <rdf:li rdf:resource=\"${item['link']}\" />\n";
}
$data .= <<<EOM
</rdf:Seq>
</items>
</channel>
EOM;
foreach($items as $item){
$data .= " <item rdf:about=\"${item['link']}\">\n";
$data .= " <title>${item['title']}</title>\n";
$data .= " <link>${item['link']}</link>\n";
$data .= " <description>${item['description']}</description>\n";
$data .= " <dc:date>${item['date']}</dc:date>\n";
$data .= " </item>\n";
}
$data .= "</rdf:RDF>\n";
$data_cv = mb_convert_encoding($data,'UTF-8','EUC-JP');
$fp = fopen($savefile,'w');
fwrite($fp,$data_cv);
}
/*サンプル関数ここまで*/
$itemsは各アイテムの多次元配列で、あらかじめDB等から代入しておきます。$savefileは保存先(UNIX上のパス)、$rssinfoはRSSファイルそのものの情報です。
$items[n] =array(
title => 'アイテムタイトル',
link => 'アイテムのリンク',
description => 'アイテムの概要',
date => 'アイテムの作成日YYYY-MM-DDTHH:MM:SS+09:00')
$rssinfo = array(
rssurl => 'RSSファイルのURL',
rsstitle => 'RSSのタイトル',
rsslink => 'RSSのリンク',
rssdesc => 'RSSの説明',
rsscreate => 'RSS作成者')
W3C RDF Validation Service
Feed Validator for Atom and RSS
RSS Validator
RSSの妥当性をチェックしてみるとFeed Validator for Atom and RSSだけは「Congratulations!」でしたが、他のふたつはエラーにorz。概要にhtmlの文字参照(&とかいうやつね)を使っているからなのですが、めんどくさいので追々考えよう。
参考図書↓。とは言っても、参考になったのは1章のみ。
入門RSS―Webにおける効率のよい情報収集/発信 新納 浩幸 by G-Tools |
投稿者 Utayume : 2005年03月05日 10:26| 04 Blog /05 Work(Perl, PHP, etc)
AD
トラックバック
このエントリーのトラックバックURL:
http://ondes-martenot.info/MT/mt-tb.cgi/361