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

    PHP数组编码gbk与utf8互相转换的两种方法实例分享

    墨辰丷墨辰丷2018-06-01 14:10:05原创935
    这篇文章给大家分享了两种转换的方法,都可以实现PHP数组的编码进行相互转换。大家可以参考自己的实际情况进行选择哪一种方法,下面来一起看看吧。

    一、利用var_export(), eval()方法

    /**
     * 将含有GBK的中文数组转为utf-8
     *
     * @param array $arr   数组
     * @param string $in_charset 原字符串编码
     * @param string $out_charset 输出的字符串编码
     * @return array
     */
    function array_iconv($arr, $in_charset="gbk", $out_charset="utf-8")
    {
     $ret = eval('return '.iconv($in_charset,$out_charset,var_export($arr,true).';'));
     return $ret;
     // 这里转码之后可以输出json
     // return json_encode($ret);
    }

    原理很简单 var_export设置第二个参数为true,返回数组原型字符串,将字符串转换为utf-8编码,之后再用eval来执行返回(类似匿名函数?),至此完美解决问题。

    eval() 函数小结:

    条件:eval() 函数把字符串按照 PHP 代码来计算。该字符串必须是合法的 PHP 代码,且必须以分号结尾。

    如果没有在代码字符串中调用 return 语句,则返回 NULL。如果代码中存在解析错误,则 eval() 函数返回 false。

     $a ="hello";
    
     $res = eval("return $a;");
    
     print_r($res);
    
     // 在赋值时必须用反斜杠对$标示符进行转义
    
     eval("\$str = \"$str\";");
    
     echo $str;

    二、利用递归将数组转码

    /**
     * UTF-8编码 GBK编码相互转换/(支持数组)
     *
     * @param array $str   字符串,支持数组传递
     * @param string $in_charset 原字符串编码
     * @param string $out_charset 输出的字符串编码
     * @return array
     */
    function array_iconv($str, $in_charset="gbk", $out_charset="utf-8")
    {
     if(is_array($str))
     {
     foreach($str as $k => $v)
     {
      $str[$k] = array_iconv($v);
     }
     return $str;
     }
     else
     {
     if(is_string($str))
     {
      // return iconv('UTF-8', 'GBK//IGNORE', $str);
      return mb_convert_encoding($str, $out_charset, $in_charset);
     }
     else
     {
      return $str;
     }
     }
    }

    总结

    PHP将数组编码gbk和utf-8相互转换的内容到这就基本结束了,文章介绍的很详细,具有一定的参考价值,希望这篇文章对大家的学习和工作能带来一定的帮助。

    以上就是本篇文的全部内容,希望能对大家的学习有所帮助。

    相关推荐:

    php使用函数pathinfo()、parse_url()和basename()解析URL

    php对接java现实加签验签的实例

    php中替换字符串函数strtr()和str_repalce()的用法与区别

    以上就是PHP数组编码gbk与utf8互相转换的两种方法实例分享的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:utf8 php 转换
    上一篇:PHP 自动加载的简单实现 下一篇:PHP实现的统计数据功能详解
    VIP课程(WEB全栈开发)

    相关文章推荐

    • 【腾讯云】年中优惠,「专享618元」优惠券!• 20+值得了解的PHP面试题(附答案分析)• ThinkPHP表单数据智能写入create方法实例分析_PHP• php编写批量生成不重复的卡号密码代码_PHP• PHP安全上传图片的方法_PHP• php中mysql连接方式PDO使用详解_PHP
    1/1

    PHP中文网