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 计算代码执行耗时的代码修正网上普遍错误
May 14 PHP
解析crontab php自动运行的方法
Jun 24 PHP
PHP实现的交通银行网银在线支付接口ECSHOP插件和使用例子
May 10 PHP
Laravel框架表单验证详解
Sep 04 PHP
php实现httpRequest的方法
Mar 13 PHP
学习php设计模式 php实现门面模式(Facade)
Dec 07 PHP
详解WordPress中过滤链接与过滤SQL语句的方法
Dec 18 PHP
PHP 中 DOMDocument保存xml时中文出现乱码问题的解决方案
Sep 19 PHP
php实现将HTML页面转换成word并且保存的方法
Oct 14 PHP
基于PHP-FPM进程池探秘
Oct 17 PHP
php实现微信公众号企业转账功能
Oct 01 PHP
WordPress免插件实现面包屑导航的示例代码
Aug 20 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
玩转虚拟域名◎+ .
2006/10/09 PHP
PHP处理excel cvs表格的方法实例介绍
2013/05/13 PHP
PHP遍历并打印指定目录下所有文件实例
2014/02/10 PHP
php cookie名使用点号(句号)会被转换
2014/10/23 PHP
php实现删除空目录的方法
2015/03/16 PHP
ThinkPHP设置禁止百度等搜索引擎转码(简单实用)
2016/02/15 PHP
goto语法在PHP中的使用教程
2020/09/17 PHP
PHP7 其他修改
2021/03/09 PHP
JavaScript实现DOM对象选择器
2016/09/24 Javascript
利用Jquery实现几款漂亮实用的时间轴(附示例代码)
2017/02/15 Javascript
JavaScript实现简单图片轮播效果
2017/08/21 Javascript
Koa 中的错误处理解析
2019/04/09 Javascript
package.json配置文件构成详解
2019/08/27 Javascript
Electron实现应用打包、自动升级过程解析
2020/07/07 Javascript
解决Echarts 显示隐藏后宽度高度变小的问题
2020/07/19 Javascript
查找Vue中下标的操作(some和findindex)
2020/08/12 Javascript
python实现list由于numpy array的转换
2018/04/04 Python
python创建文件时去掉非法字符的方法
2018/10/31 Python
对Python random模块打乱数组顺序的实例讲解
2018/11/08 Python
使用Python+wxpy 找出微信里把你删除的好友实例
2019/02/21 Python
python中的线程threading.Thread()使用详解
2019/12/17 Python
python模拟实现斗地主发牌
2020/01/07 Python
Python Opencv中用compareHist函数进行直方图比较对比图片
2020/04/07 Python
python 获取字典键值对的实现
2020/11/12 Python
python工具快速为音视频自动生成字幕(使用说明)
2021/01/27 Python
python中time tzset()函数实例用法
2021/02/18 Python
button在IE6/7下的黑边去除方案
2012/12/24 HTML / CSS
CSS3 新增选择器的实例
2019/11/13 HTML / CSS
html5定制表单_动力节点Java学院整理
2017/07/11 HTML / CSS
项目合作协议书
2014/04/16 职场文书
电子商务专业毕业生求职信
2014/06/12 职场文书
2015年党员干部承诺书
2015/01/21 职场文书
2015年工商所工作总结
2015/05/21 职场文书
优秀毕业生主要事迹材料
2015/11/04 职场文书
python实战之90行代码写个猜数字游戏
2021/04/22 Python
PostgreSQL事务回卷实战案例详析
2022/03/25 PostgreSQL