如何将PHP数组在GBK和UTF-8编码间高效转换?

2026-04-06 18:041阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计535个文字,预计阅读时间需要3分钟。

如何将PHP数组在GBK和UTF-8编码间高效转换?

这里有两种方法可以实现数组的编码互相转换。一、使用var_export()和eval()方法。将含有GBK的中文字符串数组转换为utf-8:

php* @param array $arr 数组* @param string $in_charset 原字符串编码* @param string $out_charset 输出编码* @return array*/function array_iconv($arr, $in_charset, $out_charset) { foreach ($arr as $key=> $value) { if (is_string($value)) { $arr[$key]=iconv($in_charset, $out_charset, $value); } } return $arr;}

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

一、利用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来执行返回(类似匿名函数?),至此完美解决问题。

如何将PHP数组在GBK和UTF-8编码间高效转换?

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中文网!

以上就是PHP将数组编码gbk和utf-8相互转换的详细内容,更多请关注自由互联其它相关文章!

本文共计535个文字,预计阅读时间需要3分钟。

如何将PHP数组在GBK和UTF-8编码间高效转换?

这里有两种方法可以实现数组的编码互相转换。一、使用var_export()和eval()方法。将含有GBK的中文字符串数组转换为utf-8:

php* @param array $arr 数组* @param string $in_charset 原字符串编码* @param string $out_charset 输出编码* @return array*/function array_iconv($arr, $in_charset, $out_charset) { foreach ($arr as $key=> $value) { if (is_string($value)) { $arr[$key]=iconv($in_charset, $out_charset, $value); } } return $arr;}

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

一、利用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来执行返回(类似匿名函数?),至此完美解决问题。

如何将PHP数组在GBK和UTF-8编码间高效转换?

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中文网!

以上就是PHP将数组编码gbk和utf-8相互转换的详细内容,更多请关注自由互联其它相关文章!