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 相关文章推荐
php 异常处理实现代码
Mar 10 PHP
php cookie 作用范围?不要在当前页面使用你的cookie
Mar 24 PHP
php数组函数序列之array_key_exists() - 查找数组键名是否存在
Oct 29 PHP
php+ajax实现图片文件上传功能实例
Jun 17 PHP
php+MySQL判断update语句是否执行成功的方法
Aug 28 PHP
php检查字符串中是否包含7位GSM字符的方法
Mar 17 PHP
FastCGI 进程意外退出造成500错误
Jul 26 PHP
Windows下PHP开发环境搭建教程(Apache+PHP+MySQL)
Jun 13 PHP
PHP中Laravel 关联查询返回错误id的解决方法
Apr 01 PHP
PHP长网址与短网址的实现方法
Oct 13 PHP
CI框架(CodeIgniter)实现的数据库增删改查操作总结
May 23 PHP
PHP实现的函数重载功能示例
Aug 03 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
不用数据库的多用户文件自由上传投票系统(3)
2006/10/09 PHP
解决中英文字符串长度问题函数
2007/01/16 PHP
针对PHP开发安全问题的相关总结
2019/03/22 PHP
超清晰的document对象详解
2007/02/27 Javascript
讲两件事:1.this指针的用法小探. 2.ie的attachEvent和firefox的addEventListener在事件处理上的区别
2007/04/12 Javascript
Mootools 1.2教程 定时器和哈希简介
2009/09/15 Javascript
Jquery Ajax学习实例 向页面发出请求,返回XML格式数据
2010/03/14 Javascript
GridView中获取被点击行中的DropDownList和TextBox中的值
2013/07/18 Javascript
使用ReactJS实现tab页切换、菜单栏切换、手风琴切换和进度条效果
2016/10/17 Javascript
jQuery实现级联下拉框实战(5)
2017/02/08 Javascript
React Native基础入门之调试React Native应用的一小步
2018/07/02 Javascript
vue+element树组件 实现树懒加载的过程详解
2019/10/21 Javascript
Vuex实现数据共享的方法
2019/12/20 Javascript
解决vue-cli@3.xx安装不成功的问题及搭建ts-vue项目
2020/02/09 Javascript
在vue中axios设置timeout超时的操作
2020/09/04 Javascript
Python实现根据指定端口探测服务器/模块部署的方法
2014/08/25 Python
python实现分析apache和nginx日志文件并输出访客ip列表的方法
2015/04/04 Python
python读取word文档的方法
2015/05/09 Python
python如何查看系统网络流量的信息
2016/09/12 Python
Python简单实现Base64编码和解码的方法
2017/04/29 Python
python 显示数组全部元素的方法
2018/04/19 Python
PyTorch的深度学习入门教程之构建神经网络
2019/06/27 Python
Python logging模块异步线程写日志实现过程解析
2020/06/30 Python
香港草莓网:Strawberrynet香港
2019/05/10 全球购物
学前教育毕业生自荐信范文
2013/12/24 职场文书
学习十八大报告感言
2014/02/28 职场文书
教师先进工作者事迹材料
2014/05/01 职场文书
省级优秀班集体申报材料
2014/05/25 职场文书
统计专业自荐书
2014/07/06 职场文书
印刷技术专业自荐信
2014/09/18 职场文书
建设工程授权委托书
2014/09/22 职场文书
毕业生自荐信范文
2015/03/05 职场文书
毕业生个人自荐书
2015/03/05 职场文书
教师节联欢会主持词
2015/07/04 职场文书
2015国庆节66周年标语
2015/07/30 职场文书
2016年端午节寄语
2015/12/04 职场文书