php 数组 utf8,PHP将数组编码gbk和utf-8相互转换

这里有两种方法,都可以实现数组的编码相互转换。

一、利用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相关知识,请访问PHP中文网!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值