加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 钦州站长网 (https://www.0777zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

互联网常识:php数组怎么转编码

发布时间:2022-11-09 11:19:09 所属栏目:PHP教程 来源:
导读:  跟大家讲解下有关php数组怎么转编码,相信小伙伴们对这个话题应该也很关注吧,现在就为小伙伴们说说php数组怎么转编码,小编也收集到了有关php数组怎么转编码的相关资料php编码,希望大家看到了会喜欢。

  
  跟大家讲解下有关php数组怎么转编码,相信小伙伴们对这个话题应该也很关注吧,现在就为小伙伴们说说php数组怎么转编码,小编也收集到了有关php数组怎么转编码的相关资料php编码,希望大家看到了会喜欢。
 
  php数组转编码的方法:1、利用“var_export”和“eval”方法将含有GBK的中文数组转为utf-8;2、利用递归将数组转码。
 
  本文操作环境:Windows7系统、PHP7.1版DELL G3电脑
 
  PHP数组编码gbk与utf8互相转换的两种方法
 
  一、利用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视频教程】
 
  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相互转换的内容到这就基本结束了文章介绍的很详细具有一定的参考价值希望这篇文章对大家的学习和工作能带来一定的帮助。
 

(编辑:PHP编程网 - 钦州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!