一、应用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相干学问,请接见ki4网!
以上就是PHP将数组编码gbk和utf-8互相转换的细致内容,更多请关注ki4网别的相干文章!