3

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

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

输出

string(36) "978098274360790000"

问候

4

2 回答 2

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。
于 2013-10-15T20:47:59.697 回答
1

谢谢大家,特别是@tim-cooper 字符串中有空字节,我在这里找到了解决方案: 如何从字符串中删除 NULL 字符

所以基本上:

str_replace("\0", "", $input_line);
于 2013-10-15T20:53:29.077 回答