溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

php數(shù)組轉(zhuǎn)編碼的方法

發(fā)布時間:2020-08-19 09:30:10 來源:億速云 閱讀:224 作者:小新 欄目:編程語言

這篇文章主要介紹了php數(shù)組轉(zhuǎn)編碼的方法,具有一定借鑒價值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。

php數(shù)組轉(zhuǎn)編碼的方法:1、使用iconv函數(shù)遍歷數(shù)組轉(zhuǎn)換字符集;2、利用var_export和eval方法實(shí)現(xiàn)轉(zhuǎn)換;3、利用遞歸將數(shù)組進(jìn)行轉(zhuǎn)碼。

php數(shù)組轉(zhuǎn)編碼的方法

PHP數(shù)組中文字符編碼互相轉(zhuǎn)換的三種解決方法

一、使用iconv函數(shù)遍歷數(shù)組轉(zhuǎn)換字符集

/*
* 字符串/二維數(shù)組/多維數(shù)組編碼轉(zhuǎn)換
* @param string $in_charset
* @param string $out_charset
* @param mixed $data
*/
function array_iconv($data, $in_charset='GBK', $out_charset='UTF-8'){
if (!is_array($data)){
$output = iconv($in_charset, $out_charset, $data);
}elseif(count($data)===count($data, 1)){//判斷是否是二維數(shù)組
foreach($data as $key => $value){
$output[$key] = iconv($in_charset, $out_charset, $value);
}
}else{
eval_r('$output = '.iconv($in_charset, $out_charset, var_export($data,
TRUE)).';');
}
return $output;
}

二、利用var_export(), eval()方法

/** * 將含有GBK的中文數(shù)組轉(zhuǎn)為utf-8 * * @param array $arr 數(shù)組 * @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; // 這里轉(zhuǎn)碼之后可以輸出json // return json_encode($ret); }

原理很簡單

var_export設(shè)置第二個參數(shù)為true,返回數(shù)組原型字符串,將字符串轉(zhuǎn)換為utf-8編碼,之后再用eval來執(zhí)行返回(類似匿名函數(shù)?),至此完美解決問題。

eval() 函數(shù)小結(jié):

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

如果沒有在代碼字符串中調(diào)用 return 語句,則返回 NULL。如果代碼中存在解析錯誤,則 eval() 函數(shù)返回 false。

$a ="hello"; $res = eval("return $a;"); print_r($res); //

在賦值時必須用反斜杠對$標(biāo)示符進(jìn)行轉(zhuǎn)義 eval("\$str = \"$str\";"); echo $str;

三、利用遞歸將數(shù)組轉(zhuǎn)碼(當(dāng)eval被禁用時)

/** * UTF-8編碼 GBK編碼相互轉(zhuǎn)換/(支持?jǐn)?shù)組) * * @param array $str 字符串,支持?jǐn)?shù)組傳遞 * @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; } } }

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享php數(shù)組轉(zhuǎn)編碼的方法內(nèi)容對大家有幫助,同時也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,遇到問題就找億速云,詳細(xì)的解決方法等著你來學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI