您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關使用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
來執行返回(類似匿名函數?),至此完美解決問題。
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編碼與utf8編碼進行轉換就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。