为什么 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 认为这是有效的?
最简单的答案是其中一些是 false
y
var_dump(DateTime(false)); // date shown is current time
我敢打赌,解析器(试图清理各种可接受的输入)会去掉句点(不用作定界符),只留下一个空字符串。这是唯一有意义的解释。
echo strtotime('1.1.2000'); // outputs 946681200
在 PHP 中对 strtotime() 进行了一些修改之后,我注意到当您传入空格和/或点时,它会返回一个有效的时间戳。
var_dump(strtotime(" "));
var_dump(strtotime("."));
var_dump(strtotime(". .. .. .. .... .. . .. ."));
产生:
int 1443009652
int 1443009652
int 1443009652
为什么 PHP 认为这是有效的?
最简单的答案是其中一些是 false
y
var_dump(DateTime(false)); // date shown is current time
我敢打赌,解析器(试图清理各种可接受的输入)会去掉句点(不用作定界符),只留下一个空字符串。这是唯一有意义的解释。
echo strtotime('1.1.2000'); // outputs 946681200