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

互联网 19-10-25
这里有两种方法,都可以实现数组的编码相互转换。

一、利用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中文网!

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

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: PHP
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:PHP编程20大效率要点

相关资讯