找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 539|回复: 0
打印 上一主题 下一主题

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

[复制链接]

2500

主题

2513

帖子

7520

积分

论坛元老

Rank: 8Rank: 8

积分
7520
跳转到指定楼层
楼主
发表于 2018-2-14 05:33:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

            一、利用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 URL编码解码函数代码
  • PHP下编码转换函数mb_convert_encoding与iconv的使用说明
  • PHP 页面编码声明方法详解(header或meta)
  • PHP iconv 解决utf-8和gb2312编码转换问题
  • php自动获取字符串编码函数mb_detect_encoding
  • php的urlencode()URL编码函数浅析
  • php urlencode()与urldecode()函数字符编码原理详解
  • PHP编码转换函数 自动转换字符集支持数组转换
  • php设置编码格式的方法
  • php数组编码转换示例详解
            
  • 分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    用户反馈
    客户端