php json_decode 返回值为null

今天工作中碰到一个很诡异的问题。从memcache中取出的json字符串无法解析。返回值为null。

我在做一个游戏的认证接口,客户端传入一串加密过的token,我解密以后去memcache中获取用户认证数据。

这段数据是游戏服务器端写入进memcache中的。

我把数据读出来以后,怎么都解析不了。但是打印出来没问题。

去google了一下,都是说双引号和单引号的问题。

但是我把打印出来的字符串直接放入php文件中是可以解析的,

这就排除了双引号和单引号的问题。

接着用var_dump查看字符串,发现字符数目不对。

反应过了,应该是多了隐藏字符。

接着把字符串的ascll码打印出来。

发现多了一个"\0"这个字符。马上反应过了,服务器端程序是用C写的,在C中。字符串是已"\0"结尾。

把这个小尾巴也保存进了memecache中了。哈哈。

终于解决了。用str_replace("\0","",$str);替换掉这个小尾巴就好了。

你可能感兴趣的:(PHP,返回值为null,json_decode)