Magpie RSSで日付を取得

ひとつ前のエントリで作成したヘッドラインページだが、エントリ毎の日付がうまく取得できない。どうやらRSSの種類によって記述が異なることが原因のようだが、いろいろ調べてみたところ、Magpie RSSのバージョン0.7からは便利な機能が追加されていることが分かった。

早速、Magpie RSSの本家からmagpierss-0.72をダウンロードし、適宜ファイルを入れ替えてみたところ……いきなり文字化け発生。しかしながらこれは、rss_fetch.inc内で出力エンコーディングがISO-8859-1に指定されているためだと判明。

具体的には、

define('MAGPIE_OUTPUT_ENCODING', 'ISO-8859-1');

define('MAGPIE_OUTPUT_ENCODING', 'UTF-8');

に変更すれば、文字化けは見事に解消された。本来はPHPスクリプトが使用している文字コードに設定するのがベターなのかもしれないが、今回はとりあえずUTF-8にしておいてmb_convert_encodingでEUC-JPに変換している。

さて本題だが、本家のFAQでは更新日付の取得方法として、

parse_w3cdtf($item['dc']['date']);

のようにparse_w3cdtf関数を使用するとあるが、すべてのRSSに<dc:date>タグが記述されているわけではない。<modified><pubdate>、あるいは<published>などで条件分岐させてもいいのだが、日付のフォーマットがバラバラなので前述のparse_w3cdtf関数が使えない。

しかしながら、Magpie RSSのバージョン0.7からは、$item['date_timestamp']という参照方法が加わっており、ほぼ問題なくタイムスタンプ形式で日付が取得できるようになった。

具体的には、こんな感じ。

$date_str = date("M d", $item['date_timestamp']);
if ($date >= time() - 3600 * 24 * 7) {
   $date_str = "<EM>" . $date_str . "</EM>";
}

Magpie RSS - PHP RSS Parser

トラックバック(0)

このブログ記事を参照しているブログ一覧: Magpie RSSで日付を取得

このブログ記事に対するトラックバックURL: http://somin.heteml.jp/mt/mt-tb.cgi/4264

コメントする

このブログ記事について

このページは、Sominが2006年4月11日 10:33に書いたブログ記事です。

ひとつ前のブログ記事は「Magpie RSSでヘッドラインページを作成」です。

次のブログ記事は「smartdがセクタ異常を検知」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。