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 相关文章推荐
Linux fgetcsv取得的数组元素为空字符串的解决方法
Nov 25 PHP
PHP求小于1000的所有水仙花数的代码
Jan 10 PHP
smarty模板引擎从配置文件中获取数据的方法
Jan 22 PHP
Linux系统下php获得系统分区信息的方法
Mar 30 PHP
培养自己的php编码规范
Sep 28 PHP
合格的PHP程序员必备技能
Nov 13 PHP
PHP基本语法实例总结
Sep 09 PHP
php版微信开发之接收消息,自动判断及回复相应消息的方法
Sep 23 PHP
CodeIgniter开发实现支付宝接口调用的方法示例
Nov 14 PHP
laravel migrate初学常见错误的解决方法
Oct 11 PHP
总结PHP内存释放以及垃圾回收
Mar 29 PHP
基于PHP实现用户登录注册功能的详细教程
Aug 04 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&mysql(二)
2006/10/09 PHP
使PHP自定义函数返回多个值
2006/11/26 PHP
php将HTML表格每行每列转为数组实现采集表格数据的方法
2015/04/03 PHP
PHP操作MySQL中BLOB字段的方法示例【存储文本与图片】
2017/09/15 PHP
php实现微信分享朋友链接功能
2019/02/18 PHP
零基础php编程好学吗
2019/10/11 PHP
window.onload 加载完毕的问题及解决方案(下)
2009/07/09 Javascript
基于jquery的finkyUI插件与Ajax实现页面数据加载功能
2010/12/03 Javascript
浅析JQuery获取和设置Select选项的常用方法总结
2013/07/04 Javascript
jQuery原型属性和原型方法详解
2015/07/07 Javascript
纯HTML5制作围住神经猫游戏-附源码下载
2015/08/23 Javascript
JS实现的竖向折叠菜单代码
2015/10/21 Javascript
ThinkJS中如何使用MongoDB的CURD操作
2016/12/13 Javascript
javascript基本数据类型及类型检测常用方法小结
2016/12/14 Javascript
关于JS Lodop打印插件打印Bootstrap样式错乱问题的解决方案
2016/12/23 Javascript
浅谈js停止事件冒泡 阻止浏览器的默认行为(阻止超连接 #)
2017/02/08 Javascript
js实现鼠标跟随运动效果
2020/08/02 Javascript
微信小程序之swiper滑动面板用法示例
2018/12/04 Javascript
JavaScript设计模式之责任链模式实例分析
2019/01/16 Javascript
微信小程序wxml列表渲染原理解析
2019/11/27 Javascript
Python(Tornado)模拟登录小米抢手机
2013/11/12 Python
浅谈python中的getattr函数 hasattr函数
2016/06/14 Python
Python实现Event回调机制的方法
2019/02/13 Python
Python脚本按照当前日期创建多级目录
2019/03/01 Python
Pandas读写CSV文件的方法示例
2019/03/27 Python
详解python爬虫系列之初识爬虫
2019/04/06 Python
关于 Python opencv 使用中的 ValueError: too many values to unpack
2019/06/28 Python
简单了解python 邮件模块的使用方法
2019/07/24 Python
HTML5进度条特效
2014/12/18 HTML / CSS
全球性的奢侈品梦工厂:Forzieri(福喜利)
2019/02/20 全球购物
世界上最受欢迎的花店:1-800-Flowers.com
2020/06/01 全球购物
比较一下entity bean和session bean
2013/12/27 面试题
挂牌仪式主持词
2014/03/20 职场文书
党员创先争优公开承诺书
2014/03/28 职场文书
给老师的保证书怎么写
2015/05/09 职场文书
关于golang高并发的实现与注意事项说明
2021/05/08 Golang