首頁 > 後端開發 > php教程 > php 数组转换字符串函数, 我用thinkphp ,json_encode保存中文,反斜杠消失了

php 数组转换字符串函数, 我用thinkphp ,json_encode保存中文,反斜杠消失了

WBOY
發布: 2016-06-23 13:43:49
原創
1506 人瀏覽過

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

我记得有一个可以保存变量类型 的, 数组转换字符串, 忘记叫什么了


回复讨论(解决方案)

散分了
serialize($array);
unserialize($array);
有惊喜, 找到了

是Thinkphp的问题?
直接用php的json_encode不会没有反斜杠的。

echo '<meta http-equiv="content-type" content="text/html; charset=utf-8">';$arr = array(    array(        'title' => '关注时回复',        'url' => '/index.php?g=User****'    ));$str = json_encode($arr); //echo $str.'<br>';echo '<pre class="brush:php;toolbar:false">';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 '<meta http-equiv="content-type" content="text/html; charset=utf-8">';$arr = array(    array(        'title' => '关注时回复',        'url' => '/index.php?g=User****'    ));$str = json_encode($arr); //echo $str.'<br>';echo '<pre class="brush:php;toolbar:false">';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 中 \ 不是特殊字符,但 ' 还是要转义的

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板