今天工做中碰到一個很詭異的問題。從memcache中取出的json字符串沒法解析。返回值爲null。php
我在作一個遊戲的認證接口,客戶端傳入一串加密過的token,我解密之後去memcache中獲取用戶認證數據。json
這段數據是遊戲服務器端寫入進memcache中的。服務器
我把數據讀出來之後,怎麼都解析不了。可是打印出來沒問題。google
去google了一下,都是說雙引號和單引號的問題。加密
可是我把打印出來的字符串直接放入php文件中是能夠解析的,token
這就排除了雙引號和單引號的問題。接口
接着用var_dump查看字符串,發現字符數目不對。遊戲
反應過了,應該是多了隱藏字符。字符串
接着把字符串的ascll碼打印出來。服務器端
發現多了一個"\0"這個字符。立刻反應過了,服務器端程序是用C寫的,在C中。字符串是已"\0"結尾。
把這個小尾巴也保存進了memecache中了。哈哈。
終於解決了。用str_replace("\0","",$str);替換掉這個小尾巴就行了。