程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> PHP數組編碼gbk與utf8互相轉換的兩種方法

PHP數組編碼gbk與utf8互相轉換的兩種方法

編輯:PHP綜合

一、利用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相互轉換的內容到這就基本結束了,文章介紹的很詳細,具有一定的參考價值,希望這篇文章對大家的學習和工作能帶來一定的幫助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved