Heim >Backend-Entwicklung >PHP-Tutorial >php 数组转换字符串函数, 我用thinkphp ,json_encode保存中文,反斜杠消失了
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 '';
应该是环境的原因,斜杠被处理掉。
你看下有没有对数据进行 stripslashes 之类的处理,在保存到数据库之前
接分了 恭喜楼主
你看下有没有对数据进行 stripslashes 之类的处理,在保存到数据库之前
是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 '';
接点分用用
save 是保存到数据库,那么你的 "\u5173\u6ce8\u65f6\u56de\u590d" 中的 \ 不需要转义吗?TP 会替你做?
save 是保存到数据库,那么你的 "\u5173\u6ce8\u65f6\u56de\u590d" 中的 \ 不需要转义吗?TP 会替你做?
是的,写入数据库的时候要转义特殊字符
是的,写入数据库的时候要转义特殊字符
,json_encode(array()) ;//写入数据库反斜杠消失, 需要转义
asp 中 \ 不是特殊字符,但 ' 还是要转义的