• 技术文章 >后端开发 >php教程

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

    2016-06-23 13:43:49原创492
    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 '';$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 中 \ 不是特殊字符,但 ' 还是要转义的

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    上一篇:php5.3开启gzip 下一篇:下面哪错了,不明白,刚学php,不明白,求指教
    第16期线上培训班

    相关文章推荐

    • 教你用一个PHP类来实现两个数间的加减乘除• PHP数组学习之计算数组元素总和• PHP和黄金分割数列的完美邂逅(不可错过)• PHP数组学习之二维数组计算数组长度• PHP数组学习之第一/最后一个元素的获取(二)

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网