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


Posted in PHP onSeptember 01, 2016

一、利用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 相关文章推荐
AMFPHP php远程调用(RPC, Remote Procedure Call)工具 快速入门教程
May 10 PHP
PHP 缓存实现代码及详细注释
May 16 PHP
用PHP实现递归循环每一个目录
Aug 08 PHP
PHP 第一节 php简介
Apr 28 PHP
php 调试利器debug_print_backtrace()
Jul 23 PHP
PHP中使用匿名函数操作数据库的例子
Nov 17 PHP
微信公众平台实现获取用户OpenID的方法
Apr 15 PHP
phpinfo() 中 Local Value(局部变量)Master Value(主变量) 的区别
Feb 03 PHP
php获取给定日期相差天数的方法分析
Feb 20 PHP
Yii2 如何在modules中添加验证码的方法
Jun 19 PHP
Yii1.1框架实现PHP极光推送消息通知功能
Sep 06 PHP
微信JSSDK分享功能图文实例详解
Apr 08 PHP
Yii2框架数据库简单的增删改查语法小结
Aug 31 #PHP
深入浅析Yii admin的权限控制
Aug 31 #PHP
php解决和避免form表单重复提交的几种方法
Aug 31 #PHP
PHP Callable强制指定回调类型的方法
Aug 30 #PHP
thinkphp配置文件路径的实现方法
Aug 30 #PHP
总结PHP删除字符串最后一个字符的三种方法
Aug 30 #PHP
功能强大的php文件上传类
Aug 29 #PHP
You might like
PHP实现上传文件并存进数据库的方法
2015/07/16 PHP
thinkPHP5.1框架使用SemanticUI实现分页功能示例
2019/08/03 PHP
一个js实现的所谓的滑动门
2007/05/23 Javascript
Javascript 获取LI里的内容
2008/12/17 Javascript
JavaScript 脚本将当地时间转换成其它时区
2009/03/19 Javascript
ExtJS 2.2.1的grid控件在ie6中的显示问题
2009/05/04 Javascript
JavaScript中关于indexOf的使用方法与问题小结
2010/08/05 Javascript
常用的JavaScript验证正则表达式汇总
2013/11/26 Javascript
Javascript堆排序算法详解
2014/12/03 Javascript
jquery简单图片切换显示效果实现方法
2015/01/14 Javascript
JavaScript缓冲运动实现方法(2则示例)
2016/01/08 Javascript
JS原型链怎么理解
2016/06/27 Javascript
js通过classname来获取元素的方法
2016/11/24 Javascript
react.js 翻页插件实例代码
2017/01/19 Javascript
薪资那么高的Web前端必看书单
2017/10/13 Javascript
vue实现验证码按钮倒计时功能
2018/04/10 Javascript
Vue中的作用域CSS和CSS模块的区别
2018/10/09 Javascript
详解vue中使用axios对同一个接口连续请求导致返回数据混乱的问题
2019/11/06 Javascript
Vue实现页面添加水印功能
2019/11/09 Javascript
[05:23]DOTA2-DPC中国联赛2月1日Recap集锦
2021/03/11 DOTA
pygame学习笔记(5):游戏精灵
2015/04/15 Python
浅谈Python的异常处理
2016/06/19 Python
Python数据结构之双向链表的定义与使用方法示例
2018/01/16 Python
Python实现文件信息进行合并实例代码
2018/01/17 Python
基于python的多进程共享变量正确打开方式
2018/04/28 Python
Python使用import导入本地脚本及导入模块的技巧总结
2019/08/07 Python
Django mysqlclient安装和使用详解
2020/09/17 Python
Python 里最强的地图绘制神器
2021/03/01 Python
pyx文件 生成pyd 文件用于 cython调用的实现
2021/03/04 Python
标准化管理实施方案
2014/02/25 职场文书
暖通工程师岗位职责
2014/06/12 职场文书
党的群众路线对照检查材料思想汇报
2014/09/25 职场文书
工作年限证明模板
2014/11/01 职场文书
鼋头渚导游词
2015/02/05 职场文书
2015年班级工作总结范文
2015/04/03 职场文书
2015年教师业务工作总结
2015/05/26 职场文书