Heim >Backend-Entwicklung >PHP-Tutorial >php 数组转换字符串函数, 我用thinkphp ,json_encode保存中文,反斜杠消失了

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

WBOY
WBOYOriginal
2016-06-23 13:43:491494Durchsuche

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

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn