PHP將數組編碼gbk和utf-8相互轉換

這裏有兩種方法,均可以實現數組的編碼相互轉換。php

1、利用var_export(), eval()方法css

/**
 * 將含有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來執行返回(相似匿名函數?),至此完美解決問題。html

eval() 函數小結:前端

條件:eval() 函數把字符串按照 PHP 代碼來計算。該字符串必須是合法的 PHP 代碼,且必須以分號結尾。vue

若是沒有在代碼字符串中調用 return 語句,則返回 NULL。若是代碼中存在解析錯誤,則 eval() 函數返回 false。html5

$a ="hello";
$res =  eval("return $a;");
print_r($res);
 // 在賦值時必須用反斜槓對$標示符進行轉義
 eval("\$str = \"$str\";");
 echo $str;

2、利用遞歸將數組轉碼java

/**
 * 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相互轉換的詳細內容,但願對你有所幫助。jquery

碼字不易,點個讚唄💗,支持支持

相關推薦:
如何來保護php代碼安全?
如何來保護php代碼安全?
vue組件局部刷新
WEB前端面試求職跳槽通關指南
php行爲和事件是什麼
html5彈性盒佈局詳解
JS正則表達式(要求必須同時包含數字和字母,且長度在6到20之間)
vue時間插件
jquery操做樣式 jq修改添加css樣式和class樣式類
java面試題最容易犯錯的8道題 面試

閱讀原文正則表達式

相關文章
相關標籤/搜索