php base64_decode奇怪的输出

时间:2013-10-15 20:45:14

标签: php base64

我有一个非常奇怪的输出来自base64_decode函数。输出是一个长度为18的字符串,但是当我var_dump字符串时...长度是32! 这会影响我正在申请此字符串的preg_match函数。 知道为什么吗?

$input_line = base64_decode('OQA3ADgAMAA5ADgAMgA3ADQAMwA2ADAANwA5ADAAMAAwADAA');
var_dump($input_line);

输出

string(36) "978098274360790000"

此致

2 个答案:

答案 0 :(得分:4)

字符串有很多不可打印的字符(NUL字节)。您可以通过像xxd

这样的程序来管理值
0000000: 3900 3700 3800 3000 3900 3800 3200 3700  9.7.8.0.9.8.2.7.
0000010: 3400 3300 3600 3000 3700 3900 3000 3000  4.3.6.0.7.9.0.0.
0000020: 3000 3000                                0.0.

答案 1 :(得分:1)

特别感谢大家@ tim-cooper 字符串中有空字节,我在这里找到了解决方案: How can I remove the NULL character from string

基本上是这样的:

str_replace("\0", "", $input_line);