カテゴリー
2003 | 11 | 12 |
2004 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2005 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2006 | 01 |
2004 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2005 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2006 | 01 |
2005-12-24 MagpieRSS
■[php5] MagpieRSSの不具合
先日サーバのPHPを最新の5.1.1にアップデートしたところ、MagpieRSSの日付フォーマット整形関数である parse_w3cdtf が正常に動かなくなった。
秒数に「:」まで含まれてしまうため gmmktime でエラーとなる。
おそらく preg_match の仕様が変わったのではと思い、PHPの news.txt を確認したがそれらしいことは書いていなかった。
取り急ぎ付け焼刃的な修正を加えた。
rss_utils.inc
function parse_w3cdtf ( $date_str ) {
# regex to match wc3dtf
$pat = "/(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2})(:(\d{2}))?(?:([-+])(\d{2}):?(\d{2})|(Z))?/";
if ( preg_match( $pat, $date_str, $match ) ) {
list( $year, $month, $day, $hours, $minutes, $seconds) =
array( $match[1], $match[2], $match[3], $match[4], $match[5], $match[6]);
# calc epoch for current date assuming GMT
// PHP5.1.1から挙動が変わったためとりあえず対策 2005年12月24日(土)
// echo "seconds=".$seconds; 確認用
// 以下 $seconds は下2桁のみ抽出
$epoch = gmmktime($hours, $minutes, substr($seconds,-2,2), $month, $day, $year);
echo $seconds; すると :40 などと帰ってくるので、
substr で強制的に下2桁のみを抽出することにして仮対処完了。
コメント

