为了账号安全,请及时绑定邮箱和手机立即绑定

解码json php时转义斜杠

解码json php时转义斜杠

PHP
收到一只叮咚 2021-06-29 01:25:27
从TEXT包含 JSON 对象数组的列类型(在本例中为“详细信息”列)的数据库中返回行时遇到问题。例子:{    productid: 1    shopid: 1    title: 'Product 1'--> details: [{"name":"Brand name","value":"Brand value"},{"name":"Color","value":"blue"}]    . . .}在类型列中插入数据库的数据在TEXT插入addslashes(json_encode($array_or_object))之前像安全转义一样插入。返回数据时,TEXT按函数类型返回的列json_decode()没有问题。问题当有人试图用单一的发生'和双引号"在details。例子:details: [{"name":"\\\"test123\\\"","value":"\\\"test\\\" \\'test\\' \\\"test \\' test \\' t\\\"est"}]返回值如下所示:"details": [  {    "name": "\\\"test123\\\"",    "value": "\\\"test\\\" \\'test\\' \\\"test \\' test \\' t\\\"est"  }],我有不止一种JSON在数据库中存储数据的方法(作为对象、对象数组、对象数组数组……),我需要一种方法来转义这些反斜杠。使用stripslashes()使用前的字符串json_decode()不起作用,它打破了JSON。创建一个递归函数是可行的,但并不像我希望的那样漂亮。例子:function decode_json($json) {    if (empty($json)) {        return $json;    }    if (is_string($json)) {        $json = json_decode($json, true);    }    foreach ($json as $key => $value) {        if (is_array($value)) {            $json[$key] = decode_json($value);            continue;        }        $json[$key] = stripslashes($value);    }    return $json;}任何帮助表示赞赏。
查看完整描述

2 回答

  • 2 回答
  • 0 关注
  • 210 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信