【MySQL】使用like模糊查询json的数据

需求

在已生成的json数据,模糊搜索指定内容

解决办法

$number = str_replace('"', '', json_encode($number));
$number = str_replace("\\", '_', $number);

分析

  1. 去除json_encode转义过后的数据中的 “双引号
  2. 将转义后的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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值