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

资源魔 26 0
这里有两种办法,均可以完成数组的编码互相转换。

1、行使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;

2、行使递归将数组转码

/**
 * 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互相转换的具体内容,更多请存眷资源魔其它相干文章!

标签: php php开发教程 php开发资料 php开发自学

抱歉,评论功能暂时关闭!