strtotime 

strtotime は日付のフォーマットをどのくらい認識してくれるのか、気になったので以下のスクリプトを組んで調べてみた。



$fmt = array(
   "2005-10-04",
   "2005/09/28",
   "2005.10.05",
   "2005 09 20",
   "20050920",
   "2005-1-4",
   "2005/3/3",
   "2005.1.5",
   "2005 5 5",
   "200555",
   "05-04-01",
   "05/09/19",
   "05.04.04",
   "05 07 07",
   "5-6-7",
   "5/1/1",
   "5.8.7",
   "5 2 3",
   "523",
);

foreach ( $fmt as $f ){
   $stp = strtotime( $f );
   $day = date("Y/m/d H:i:s", $stp );
   echo $f . " => " . $stp . " => " . $day . "
\n";
}

?>

結果は以下の通り

○2005-10-04 => 1128351600 => 2005/10/04 00:00:00
○2005/09/28 => 1127833200 => 2005/09/28 00:00:00

×2005.10.05 => -1 => 1970/01/01 08:59:59
×2005 09 20 => -1 => 1970/01/01 08:59:59

○20050920 => 1127142000 => 2005/09/20 00:00:00
○2005-1-4 => 1104764400 => 2005/01/04 00:00:00
○2005/3/3 => 1109775600 => 2005/03/03 00:00:00

×2005.1.5 => -1 => 1970/01/01 08:59:59
×2005 5 5 => -1 => 1970/01/01 08:59:59

△200555 => 1592924400 => 2020/06/24 00:00:00
※2020年5月55日⇒2020年6月24日と解釈

○05-04-01 => 1112281200 => 2005/04/01 00:00:00
○05/09/19 => 1557327600 => 2019/05/09 00:00:00

×05.04.04 => -1 => 1970/01/01 08:59:59
×05 07 07 => -1 => 1970/01/01 08:59:59

○5-6-7 => 1118070000 => 2005/06/07 00:00:00
△5/1/1 => 988642800 => 2001/05/01 00:00:00
※2001年5月1日と解釈

×5.8.7 => -1 => 1970/01/01 08:59:59
×5 2 3 => -1 => 1970/01/01 08:59:59

△523 => 1133554980 => 2005/12/03 05:23:00
※本日の5時23分と解釈

無効なデータを受信しました。 

Docomo(ドコモ)の携帯、主に505シリーズ506シリーズで「無効なデータを受信しました。」というエラーが表示されることがある。

主な原因は、ヘッダーに Location を送る時に相対パスを書くとエラーが出る。

header("Location: ../hoge/");
exit;

これを絶対パスに修正すると505シリーズはエラーが出なくなるが、506シリーズは改善しない。
原因は良く分からないが exit; 文をカットすると正常に動作するみたいだ。

header("Location: http://www.domain/hoge/");