PHP數組編碼gbk與utf8互相轉換的兩種方法執行個體分享

來源:互聯網
上載者:User
這篇文章給大家分享了兩種轉換的方法,都可以實現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相互轉換的內容到這就基本結束了,文章介紹的很詳細,具有一定的參考價值,希望這篇文章對大家的學習和工作能帶來一定的協助。

以上就是本篇文的全部內容,希望能對大家的學習有所協助。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.