亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

PHP數(shù)組編碼gbk與utf8互相轉(zhuǎn)換的兩種方法

 更新時(shí)間:2016年09月01日 10:50:48   投稿:daisy  
這篇文章給大家分享了兩種轉(zhuǎn)換的方法,都可以實(shí)現(xiàn)PHP數(shù)組的編碼進(jìn)行相互轉(zhuǎn)換。大家可以參考自己的實(shí)際情況進(jìn)行選擇哪一種方法,下面來(lái)一起看看吧。

一、利用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)碼

/**
 * 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;
 }
 }
}

總結(jié)

PHP將數(shù)組編碼gbk和utf-8相互轉(zhuǎn)換的內(nèi)容到這就基本結(jié)束了,文章介紹的很詳細(xì),具有一定的參考價(jià)值,希望這篇文章對(duì)大家的學(xué)習(xí)和工作能帶來(lái)一定的幫助。

相關(guān)文章

最新評(píng)論