开发者社区> 问答> 正文

请求php高手帮助解答json_decode问题? 400 报错

请求php高手帮助解答json_decode问题? 400 报错

我在php中通过提交得到数据:
$option = $_POST['option'];
值为:[{"name":"测试","type":3,"val":"选项一\n选项二"}]
我使用:
$optionList_array = json_decode(stripcslashes($option),true);//stripcslashes()
 foreach ($optionList_array as $k => $v) {  
  $name = $v[name];  
  $type = $v[type];  
  $val = $v[val];
 }
保存数据。
问题:
保存数据到数据库时其$val值成了:选项一
                                             选项二

\n被删去了,我想保存为:选项一\n选项二,即保留\n不变,该如何做呢,请求高手请指导!谢谢!
我尝试不用stripcslashes(),结果不能运行。不知是什么回事。

如果不行可不可以把   选项一:用 选项一\n选项二,调用出来也可以达到保留\n不变。
                            选项二

展开
收起
爱吃鱼的程序员 2020-06-03 15:06:17 1367 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    把json字符串里面的双引号改成单引号

    $option = str_replace('"',"'",$_POST['option']);

    ###### option的数据格式不对,在前端传过来双引号是需要转义的######

    1、$name = $v[name];  
      $type = $v[type];  
      $val = $v[val];

    数组下面应该用单引号包裹,如$v['name']

    2、json_decode(stripcslashes($option),true)

    不应该在decode之前作stripcslashes处理,要做也应该是在loop中对变量进行

    try:

    $optionList_array = json_decode($option, TRUE);
     foreach ($optionList_array as $k => $v) {  
      $name = addslashes($v['name']);  
      $type = $v['type'];  
      $val = addslashes($v['val']);
     }


    ######

    没必要换

    一定要换的话 遍历 str_replace

    ######你存进去以后看到换行了说明\n是还在的,你想要打印出\n就需要把\n转换为字符串的"\n"######感谢各位的帮助,您的回答给我了启发,存进去以后看到换行了说明\n是还在的!我找到解决方法把他打印出来了。谢谢。######打印时用 nl2br($val);就行了
    2020-06-03 16:44:10
    赞同 展开评论 打赏
问答分类:
PHP
问答地址:
问答排行榜
最热
最新

相关电子书

更多
阿里云栖开发者沙龙PHP技术专场-深入浅出网络编程与swoole内核-吴镇宇 立即下载
PHP安全开发:从白帽角度做安全 立即下载
PHP 2017.北京 全球开发者大会——高可用的PHP 立即下载