這篇文章主要介紹php數組如何轉編碼,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
php數組轉編碼的方法:1、利用“var_export()”和“eval()”方法將含有GBK的中文數組轉為utf-8;2、利用遞歸將數組轉碼。
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數組如何轉編碼”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。