温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2020-10-26 10:16:45 来源:亿速云 阅读:312 作者:小新 栏目:编程语言

小编给大家分享一下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将数组编码gbk和utf-8相互转换的案例有了一定的了解,想了解更多相关知识,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI