我不是一个php编码器,但命运决定我需要通过它。
$vote_date = date_create_from_format("H:i:s d.m.y", $last_vote_date_str); //$last_vote_date_str is 19:45:12 25.12.13
if ($vote_date == false)
echo "<span style='color:red'>Error: Unable to parse the last vote date ($last_vote_date_str) -> (".date_format($vote_date, "Y-m-d H:i:s").")!<br><br></span><br>";
这是我一直得到的输出:Unable to parse the last vote date (19:45:12 25.12.13) -> ().")!
我不明白为什么会这样。我多次重新检查这种日期格式,我认为这是正确的。 有什么想法吗?
P.S。
echo var_dump($last_vote_date_str);
的结果为string(26) "19:45:12 25.12.13"
我试着这样做:
$temp_last_vote_str = "";
for ($j = 0; $j < strlen($last_vote_date_str); $j++)
if ($last_vote_date_str[j] == '0' || $last_vote_date_str[j] == '1' || $last_vote_date_str[j] == '2' || $last_vote_date_str[j] == '3' || $last_vote_date_str[j] == '4' || $last_vote_date_str[j] == '5' || $last_vote_date_str[j] == '6' || $last_vote_date_str[j] == '7' || $last_vote_date_str[j] == '8' || $last_vote_date_str[j] == '9' || $last_vote_date_str[j] == ':' || $last_vote_date_str[j] == '.' || $last_vote_date_str[j] == ' ')
$temp_last_vote_str += $last_vote_date_str[j];
$last_vote_date_str = $temp_last_vote_str;
但是在&gt; _&lt;
之后,last_vote_date_str变为空答案 0 :(得分:3)
您的var_dump()
输出显示string(26) "19:45:12 25.12.13"
。它应该说string(17)
。因此,实际的$last_vote_date_str
字符串中有9个隐藏字符,这导致函数无效。
将以下代码行添加到脚本顶部,然后再次刷新页面以检查var_dump()
输出:
header('Content-Type: text/plain');
这会将文档的Content-Type
设置为明文,并显示所有字符,您可以轻松找出导致错误的原因。
答案 1 :(得分:1)
由于您有一些“不可见”字符,您可以使用正则表达式删除它们:
$last_vote_date_str = trim(preg_replace('~[^\d:.]~', ' ', $last_vote_date_str));
上面的代码会移除所有不是数字的字符,:
或.
,空格。