需求
在已生成的json数据,模糊搜索指定内容
解决办法
$number = str_replace('"', '', json_encode($number));
$number = str_replace("\\", '_', $number);
分析
- 去除json_encode转义过后的数据中的 “双引号
- 将转义后的unicode编码数据中的 “\” 替换成 “_”,就可查询出来结果
问题
经过上面的数据处理,可正常查询出数据。但是经过测试,发现,如果只经上次的处理,查询内容中如果存在中文的话,部分筛选不会成功。经过查询,是json_encode中文UNICOD转码的问题, 所需需要
完善以上问题,调整如下
json_encode()增加第二个参数JSON_UNESCAPED_UNICODE
完善后
$number = str_replace('"', '', json_encode($number,JSON_UNESCAPED_UNICODE));
$number = str_replace("\\", '_', $number);
分析
在使用json_encode()函数将变量转义为json字符串的时候,由于json_encode()仅支持中文,json_encode()函数会将中文转成utf-8的 UNICODE 编码,也就是看到的 “\uxxxx” 代表一个中文汉字的形式。
从PHP5.4开始,json_encode()增加了第二个参数 JSON_UNESCAPED_UNICODE,可以友好的支持中文。
相关参考
http://www.lrxin.com/archives-1029.html