php 数组转换字符串函数, 我用thinkphp ,json_encode保存中文,反斜杠消失了
程序员文章站
2022-04-02 16:09:13
...
php 数组转换字符串函数, 我用thinkphp ,json_encode保存中文,反斜杠消失了
原本是这个
[{"title":"\u5173\u6ce8\u65f6\u56de\u590d","url":"\/index.php?g=User****"}]
结果变成这个了
[{"title":"u5173u6ce8u65f6u56deu590d","url":"\/index.php?g=User****"}]
就是中文,用json_decode 处理,保存到数据库就没有反斜杠了,
php版本 5.2, apache 2.2
我记得有一个可以保存变量类型 的, 数组转换字符串, 忘记叫什么了
[{"title":"\u5173\u6ce8\u65f6\u56de\u590d","url":"\/index.php?g=User****"}]
Array
(
[0] => Array
(
[title] => 关注时回复
[url] => /index.php?g=User****
)
)
不清楚,应该是处理了,
请问在哪里设置?
我用 json_decode 有反斜杠, 保存到数据库就没有 了,
还要本地没事,上传服务器就不行了, 配置一样
本地php 5.5
服务器php 5.2的,
用 serialize 这个函数代替了,
返回字符串, 数组 变量类型都会保存,不变
[{"title":"\u5173\u6ce8\u65f6\u56de\u590d","url":"\/index.php?g=User****"}]
Array
(
[0] => Array
(
[title] => 关注时回复
[url] => /index.php?g=User****
)
)
感觉是thinkphp 的问题, 保存之后就没有了, $db->save(json);
明白了 , 需要 这个是吗?
str_replace("/\\/","\\\\",json)
是不是写入数据库都需要转义?
恩 ,谢谢, 以前 用asp 的, 只有是变量里面的值 都不用管, 就可以写入数据库 ,知道了
谢谢 结贴了
原本是这个
[{"title":"\u5173\u6ce8\u65f6\u56de\u590d","url":"\/index.php?g=User****"}]
结果变成这个了
[{"title":"u5173u6ce8u65f6u56deu590d","url":"\/index.php?g=User****"}]
就是中文,用json_decode 处理,保存到数据库就没有反斜杠了,
php版本 5.2, apache 2.2
我记得有一个可以保存变量类型 的, 数组转换字符串, 忘记叫什么了
回复讨论(解决方案)
散分了
serialize($array);
unserialize($array);
有惊喜, 找到了
是Thinkphp的问题?
直接用php的json_encode不会没有反斜杠的。
echo '';$arr = array( array( 'title' => '关注时回复', 'url' => '/index.php?g=User****' ));$str = json_encode($arr); //echo $str.'
';echo '';print_r(json_decode($str,true));echo '';
[{"title":"\u5173\u6ce8\u65f6\u56de\u590d","url":"\/index.php?g=User****"}]
Array
(
[0] => Array
(
[title] => 关注时回复
[url] => /index.php?g=User****
)
)
应该是环境的原因,斜杠被处理掉。
你看下有没有对数据进行 stripslashes 之类的处理,在保存到数据库之前
接分了 恭喜楼主
你看下有没有对数据进行 stripslashes 之类的处理,在保存到数据库之前
不清楚,应该是处理了,
请问在哪里设置?
我用 json_decode 有反斜杠, 保存到数据库就没有 了,
还要本地没事,上传服务器就不行了, 配置一样
本地php 5.5
服务器php 5.2的,
用 serialize 这个函数代替了,
返回字符串, 数组 变量类型都会保存,不变
是Thinkphp的问题?
直接用php的json_encode不会没有反斜杠的。
echo '';$arr = array( array( 'title' => '关注时回复', 'url' => '/index.php?g=User****' ));$str = json_encode($arr); //echo $str.'
';echo '';print_r(json_decode($str,true));echo '';
[{"title":"\u5173\u6ce8\u65f6\u56de\u590d","url":"\/index.php?g=User****"}]
Array
(
[0] => Array
(
[title] => 关注时回复
[url] => /index.php?g=User****
)
)
感觉是thinkphp 的问题, 保存之后就没有了, $db->save(json);
接点分用用
save 是保存到数据库,那么你的 "\u5173\u6ce8\u65f6\u56de\u590d" 中的 \ 不需要转义吗?TP 会替你做?
save 是保存到数据库,那么你的 "\u5173\u6ce8\u65f6\u56de\u590d" 中的 \ 不需要转义吗?TP 会替你做?
明白了 , 需要 这个是吗?
str_replace("/\\/","\\\\",json)
是不是写入数据库都需要转义?
是的,写入数据库的时候要转义特殊字符
是的,写入数据库的时候要转义特殊字符
恩 ,谢谢, 以前 用asp 的, 只有是变量里面的值 都不用管, 就可以写入数据库 ,知道了
谢谢 结贴了
,json_encode(array()) ;//写入数据库反斜杠消失, 需要转义
asp 中 \ 不是特殊字符,但 ' 还是要转义的