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>";
}
トラックバック(0)
このブログ記事を参照しているブログ一覧: Magpie RSSで日付を取得
このブログ記事に対するトラックバックURL: http://somin.heteml.jp/mt/mt-tb.cgi/4264
コメントする