所以我已经制作了一个时钟到秒的功能,并且在运行它的时候它运行正常,带有测试字符串......比如12:53:13 PM。
但是当我把它放在另一个脚本中时(通过require或者只是复制粘贴)我发现了一个问题,我不确定它是否特别是由于该功能,但这只是奇怪。字符串
“PM”正在注册为6个字符而不是2个字符,就像var_dump所说的那样。有什么想法吗?
我通过爆炸整个日期的字符串来获得时间。这实际上是代码
$time = explode(" ",$dateallstr);
$time = array($time[5],$time[6]);
$time = implode(" ",$time);
var_dump($time);
//require("timeinsecs.php");
这就是var_dump返回的内容
array(4) { [0]=> string(2) "11" [1]=> string(2) "14" [2]=> string(2) "55" [3]=> string(6) "PM" }
这是起始字符串。
DATEALLSTR: string(45) "Tuesday 14th of February 2012 11:14:55 PM"
请帮助,我不知道为什么会这样做。
编辑:
好的,拿到了bin2hex。我不确定这件事是否仅仅是bin2hex。
BIN2HEX504d3c2f693estring(6)“PM”
答案 0 :(得分:3)
查看bin2hex()
函数的输出,我注意到序列3c 2f 69 3e
。这是什么意思?答案是:
</i>
查看来源var_dump()
的输出。它应该说:
array(4) {
[0]=> string(2) "11"
[1]=> string(2) "14"
[2]=> string(2) "55"
[3]=> string(6) "PM</i>"
}
浏览器将</i>
解析为HTML标记,不会显示它!
答案 1 :(得分:2)
原始字符串的长度为41.看起来你的输入在文本后面有4个NUL字符,这些字符没有打印但是按照长度计算:
var_dump("Tuesday 14th of February 2012 11:14:55 PM");
=> string(41) "Tuesday 14th of February 2012 11:14:55 PM"
var_dump("Tuesday 14th of February 2012 11:14:55 PM\0\0\0\0");
=> string(45) "Tuesday 14th of February 2012 11:14:55 PM"
你可以在trim()
之前尝试explode()
输入,这应该摆脱额外的字符:
$time = explode(" ", trim($dateallstr));
编辑:您已跳过PHP故障排除的第一步:查看源代码以查看Web浏览器未显示的内容。现在您已经发布了十六进制转储,我们看到最后一个字符串实际上是"PM</i>"
。