请求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不变。
选项二
把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);就行了版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。