《PHP實戰(zhàn):PHP數(shù)組編碼gbk與utf8互相轉(zhuǎn)換的兩種方法》要點:
本文介紹了PHP實戰(zhàn):PHP數(shù)組編碼gbk與utf8互相轉(zhuǎn)換的兩種方法,希望對您有用。如果有疑問,可以聯(lián)系我們。
PHP學(xué)習(xí)一、利用var_export(), eval()方法
PHP學(xué)習(xí)
/**
* 將含有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);
}
PHP學(xué)習(xí)原理很簡單 var_export
設(shè)置第二個參數(shù)為true
,返回數(shù)組原型字符串,將字符串轉(zhuǎn)換為utf-8編碼,之后再用eval
來執(zhí)行返回(類似匿名函數(shù)?),至此完美解決問題.
PHP學(xué)習(xí)eval() 函數(shù)小結(jié):
PHP學(xué)習(xí)? 條件:eval()
函數(shù)把字符串按照 PHP 代碼來計算.該字符串必須是合法的 PHP 代碼,且必須以分號結(jié)尾.
PHP學(xué)習(xí)? 如果沒有在代碼字符串中調(diào)用 return
語句,則返回 NULL
.如果代碼中存在解析錯誤,則 eval()
函數(shù)返回 false.
PHP學(xué)習(xí)
$a ="hello";
$res = eval("return $a;");
print_r($res);
// 在賦值時必須用反斜杠對$標示符進行轉(zhuǎn)義
eval("\$str = \"$str\";");
echo $str;
PHP學(xué)習(xí)二、利用遞歸將數(shù)組轉(zhuǎn)碼
PHP學(xué)習(xí)
/**
* UTF-8編碼 GBK編碼相互轉(zhuǎn)換/(支持數(shù)組)
*
* @param array $str 字符串,支持數(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學(xué)習(xí)總結(jié)
PHP學(xué)習(xí)PHP將數(shù)組編碼gbk和utf-8相互轉(zhuǎn)換的內(nèi)容到這就基本結(jié)束了,文章介紹的很詳細,具有一定的參考價值,希望這篇文章對大家的學(xué)習(xí)和工作能帶來一定的幫助.
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/3949.html