为什么 strtotime(' ') 和 strtotime('.') return 是时间戳?

Why do strtotime(' ') and strtotime('.') return a timestamp?

在 PHP 中对 strtotime() 进行了一些修改之后,我注意到当您传入空格和/或点时,它会返回一个有效的时间戳。

var_dump(strtotime(" "));
var_dump(strtotime("."));
var_dump(strtotime(". .. .. .. .... .. . .. ."));

产生:

int 1443009652
int 1443009652
int 1443009652

为什么 PHP 认为这是有效的?

最简单的答案是其中一些是 falsey

var_dump(DateTime(false)); // date shown is current time

我敢打赌,解析器(试图清理各种可接受的输入)会去掉句点(不用作定界符),只留下一个空字符串。这是唯一有意义的解释。

echo strtotime('1.1.2000'); // outputs 946681200