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世纪万年历
Dec 06 PHP
PHP产生随机字符串函数
Dec 06 PHP
Mysql和网页显示乱码解决方法集锦
Mar 27 PHP
领悟php接口中interface存在的意义
Jun 27 PHP
php随机显示图片的简单示例
Feb 15 PHP
PHP实现图片裁剪、添加水印效果代码
Oct 01 PHP
PHP中通过fopen()函数访问远程文件示例
Nov 18 PHP
PHP实现批量检测网站是否能够正常打开的方法
Aug 23 PHP
PHP实现SMTP邮件的发送实例
Sep 27 PHP
使用PHPWord生成word文档的方法详解
Jun 06 PHP
laravel框架分组控制器和分组路由实现方法示例
Jan 25 PHP
详细分析PHP7与PHP5区别
Jun 26 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中session使用示例
2014/03/29 PHP
php cli换行示例
2014/04/22 PHP
PHP图片自动裁切应付不同尺寸的显示
2014/10/16 PHP
PHP中使用jQuery+Ajax实现分页查询多功能操作(示例讲解)
2017/09/17 PHP
PHP ElasticSearch做搜索实例讲解
2020/02/05 PHP
ext for eclipse插件安装方法
2008/04/27 Javascript
9个javascript语法高亮插件 推荐
2009/07/18 Javascript
分别用marquee和div+js实现首尾相连循环滚动效果,仅3行代码
2011/09/21 Javascript
javascript中将Object转换为String函数代码 (json str)
2012/04/29 Javascript
JS获取当前日期和时间的简单实例
2013/11/19 Javascript
基于NodeJS的前后端分离的思考与实践(三)轻量级的接口配置建模框架
2014/09/26 NodeJs
JQuery动态添加和删除表格行的方法
2015/03/09 Javascript
JavaScript动态修改网页元素内容的方法
2015/03/21 Javascript
JavaScript数据类型判定的总结笔记
2015/07/31 Javascript
如何实现JavaScript动态加载CSS和JS文件
2020/12/28 Javascript
动态JavaScript所造成一些你不知道的危害
2016/09/25 Javascript
AngularJS中的promise用法分析
2017/05/19 Javascript
jquery手机触屏滑动拼音字母城市选择器的实例代码
2017/12/11 jQuery
JavaScript设计模式之命令模式实例分析
2019/01/16 Javascript
JavaScript面向对象核心知识与概念归纳整理
2020/05/09 Javascript
Vue组件简易模拟实现购物车
2020/12/21 Vue.js
Python实现的简单算术游戏实例
2015/05/26 Python
Python的collections模块中的OrderedDict有序字典
2016/07/07 Python
Python中偏函数用法示例
2018/06/07 Python
Python内置函数及功能简介汇总
2020/10/13 Python
GOOD AMERICAN官网:为曲线性感而设计
2017/12/28 全球购物
美国在线旅行社:Crystal Travel
2018/09/11 全球购物
管理站站长岗位职责
2013/11/27 职场文书
2013的个人自我评价
2013/12/26 职场文书
教师旷工检讨书
2014/01/18 职场文书
《小熊住山洞》教学反思
2014/02/21 职场文书
雷人标语集锦
2014/06/19 职场文书
2015高考寄语集锦
2015/02/27 职场文书
python 字典和列表嵌套用法详解
2021/06/29 Python
Java后台生成图片的完整步骤
2021/08/04 Java/Android
Python之基础函数案例详解
2021/08/30 Python