>  기사  >  백엔드 개발  >  php 数组转换字符串函数, 我用thinkphp ,json_encode保存中文,反斜杠消失了

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

WBOY
WBOY원래의
2016-06-23 13:43:491484검색

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 中 \ 不是特殊字符,但 ' 还是要转义的

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.