日記
changes.xmlのパース (18:55)Edit

はてなダイアリーの更新時刻情報としてchanges.xmlが用意されたんで、従来のRSSからこっちに切り替えるべきだろうなー。はてなダイアリーの規模だと更新が激しすぎてRSSだといろいろ問題があったし。

でもchanges.xmlのパース処理って用意してないんで書かないと。XMLとして処理せず、単にパターンマッチで処理した方が効率が良さそうだな。

<?php
mb_internal_encoding('sjis');
$srcUrl = 'http://d.hatena.ne.jp/changes.xml';
$xml = mb_convert_encoding(file_get_contents($srcUrl), mb_internal_encoding(), 'utf-8');
if (!preg_match('|updated="(.*?)"\s+count="(.*?)"|i', $xml, $matches)) {die;}
$baseTime = strtotime($matches[1]);
$count = intval($matches[2]);
if (!preg_match_all('|<weblog\s+name="(.*?)"\s+url="(.*?)"\s+when="(.*?)"\s*/>|', $xml, $matches, PREG_SET_ORDER)) {die;}
foreach ($matches as $item) {
$title = $item[1];
$url = $item[2];
$lastmodified = $baseTime - intval($item[3]);
echo $title . ' ' . $url . ' ' . date('Y-m-d H:i:s', $lastmodified) . "\n";
}
?>

とか。

Published At2005-06-02 00:00Updated At2005-06-02 00:00