« ミッフィーのお財布 | メイン | 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の文字参照(&amp;とかいうやつね)を使っているからなのですが、めんどくさいので追々考えよう。

参考図書↓。とは言っても、参考になったのは1章のみ。

入門RSS―Webにおける効率のよい情報収集/発信
新納 浩幸

by G-Tools

投稿者 Utayume : 2005年03月05日 10:26| 04 Blog /05 Work(Perl, PHP, etc)

AD

ベルメゾンネット ニッセン セシール ムトウ IMAGEnet DHCオンラインショップ 白鳩/京都発インナーショップ

トラックバック

このエントリーのトラックバックURL:
http://ondes-martenot.info/MT/mt-tb.cgi/361

AD

Mac ソフトのことなら act2.com デル株式会社 ioPLAZA【アイ・オー・データ直販サイト】 Just MyShop(ジャストシステム)