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 相关文章推荐
discuz Passport 通行证 整合笔记
Jun 30 PHP
php判断字符以及字符串的包含方法属性
Aug 30 PHP
PHP ajax 分页类代码
Nov 13 PHP
fleaphp crud操作之find函数的使用方法
Apr 23 PHP
114啦源码(114la)不能生成地方房产和地方报刊问题4级页面0字节的解决方法
Jan 12 PHP
对PHP语言认识上需要避免的10大误区
Jun 12 PHP
php查找指定目录下指定大小文件的方法
Nov 28 PHP
php判断数组中是否存在指定键(key)的方法
Mar 17 PHP
php中实现用数组妩媚地生成要执行的sql语句
Jul 10 PHP
php微信公众平台开发(一) 配置接口
Dec 06 PHP
php断点续传之文件分割合并详解
Dec 13 PHP
phpmyadmin下载、安装、配置教程
May 16 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作的文本留言本的例子(六)
2006/10/09 PHP
PHP开发入门教程之面向对象
2006/12/05 PHP
PHP 字符串编码截取函数(兼容utf-8和gb2312)
2009/05/02 PHP
php 魔术方法使用说明
2009/10/20 PHP
编写php应用程序实现摘要式身份验证的方法详解
2013/06/08 PHP
PHP调用VC编写的COM组件实例
2014/03/29 PHP
PHP准确取得服务器IP地址的方法
2015/06/02 PHP
Add Formatted Text to a Word Document
2007/06/15 Javascript
JavaScript 设计模式之组合模式解析
2010/04/09 Javascript
javascript 数组学习资料收集
2010/04/11 Javascript
JavaScript中使用构造函数实现继承的代码
2010/08/12 Javascript
jQuery EasyUI API 中文文档 - MenuButton菜单按钮使用介绍
2011/10/06 Javascript
JavaScript根据数据生成百分比图和柱状图的实例代码
2013/07/14 Javascript
javascript中的throttle和debounce浅析
2014/06/06 Javascript
js+css实现select的美化效果
2016/03/24 Javascript
jQuery点击其他地方时菜单消失的实现方法
2016/04/22 Javascript
微信小程序  简单实例(阅读器)的实例开发
2016/09/29 Javascript
JS判断来路是否是百度等搜索索引进行弹窗或自动跳转的实现代码
2016/10/09 Javascript
原生和jQuery的ajax用法详解
2017/01/23 Javascript
Angular2 之 路由与导航详细介绍
2017/05/26 Javascript
jquery对table做排序操作的实例演示
2017/08/10 jQuery
vue父子组件的嵌套的示例代码
2017/09/08 Javascript
js实现随机点名系统(实例讲解)
2017/10/18 Javascript
JavaScript中严格判断NaN的方法
2018/02/16 Javascript
JS异步执行结果获取的3种解决方式
2019/02/19 Javascript
python简单的函数定义和用法实例
2015/05/07 Python
利用python求解物理学中的双弹簧质能系统详解
2017/09/29 Python
JSONLINT:python的json数据验证库实例解析
2017/11/28 Python
Python通用循环的构造方法实例分析
2018/12/19 Python
pycharm中使用request和Pytest进行接口测试的方法
2020/07/31 Python
Python 实现二叉查找树的示例代码
2020/12/21 Python
python实现马丁策略的实例详解
2021/01/15 Python
中级会计职业生涯规划范文
2014/01/16 职场文书
计算机教师工作总结
2015/08/13 职场文书
导游词之贵州织金洞
2019/10/12 职场文书
详解Flutter网络请求Dio库的使用及封装
2022/04/14 Java/Android