Php 为什么strotime(';';)和strotime(';';)返回时间戳?

Php 为什么strotime(';';)和strotime(';';)返回时间戳?,php,strtotime,Php,Strtotime,在PHP中使用strotime()进行了一些修改之后,我注意到当您传入空格或点时,它会返回一个有效的时间戳 var_dump(strtotime(" ")); var_dump(strtotime(".")); var_dump(strtotime(". .. .. .. .... .. . .. .")); 产生: int 1443009652 int 1443009652 int 1443009652 为什么PHP认为这是有效的?最简单的答案是其中一些是falsey var_dump(D

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

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

有趣的问题:你为什么要这样做?它应该返回'false',根据文档,它不能将其解析为日期/时间。那么如果你认为这是不正确的,是的,但为什么<代码>选通时间(“伪”)按预期返回FALSE。我希望,
“…”
也会返回FALSE,因为我无法看出它可以作为接近日期/时间的东西进行分析,可能是因为点、逗号、空格、斜杠、破折号等通常都可以作为日期格式的分隔符传递给strottime(),而
strottime(“伪”)
都是纯字母。。。。但是如果不仔细阅读PHP源代码cde,您将无法找到原因的答案,只是猜测可能是这样。我希望
strotime(“”)
strotime(“”)
会给出相同的输出,但它们不会。我将提交一个bug,看看他们是否能澄清这种行为返回时间戳?我在这里测试,结果是假的。php5.6.8我不愿意使用此函数,php5.1.0可能是您现在将标记为正确的教程答案。我提交了一份bug报告,但到目前为止没有任何反应。