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)碼。
瑞麗網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)公司!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)公司等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)公司于2013年開(kāi)始到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)公司。
推薦:《PHP視頻教程》
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); }
原理很簡(jiǎn)單
var_export設(shè)置第二個(gè)參數(shù)為true,返回?cái)?shù)組原型字符串,將字符串轉(zhuǎn)換為utf-8編碼,之后再用eval來(lái)執(zhí)行返回(類似匿名函數(shù)?),至此完美解決問(wèn)題。
eval() 函數(shù)小結(jié):
條件:eval() 函數(shù)把字符串按照 PHP 代碼來(lái)計(jì)算。該字符串必須是合法的 PHP 代碼,且必須以分號(hào)結(jié)尾。
如果沒(méi)有在代碼字符串中調(diào)用 return 語(yǔ)句,則返回 NULL。如果代碼中存在解析錯(cuò)誤,則 eval() 函數(shù)返回 false。
$a ="hello"; $res = eval("return $a;"); print_r($res); //
在賦值時(shí)必須用反斜杠對(duì)$標(biāo)示符進(jìn)行轉(zhuǎn)義 eval("\\$str = \\"$str\\";"); echo $str;
三、利用遞歸將數(shù)組轉(zhuǎn)碼(當(dāng)eval被禁用時(shí))
/** * 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; } } }
分享題目:php數(shù)組如何轉(zhuǎn)編碼
網(wǎng)站路徑:http://jinyejixie.com/article24/chohce.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、商城網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站制作、企業(yè)網(wǎng)站制作、全網(wǎng)營(yíng)銷推廣
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)