一、利用var_export(), eval()方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
原理很簡單 var_export
設置第二個參數為true
,返回數組原型字符串,將字符串轉換為utf-8編碼,之后再用eval
來執行返回(類似匿名函數?),至此完美解決問題。
eval() 函數小結:
條件:eval()
函數把字符串按照 PHP 代碼來計算。該字符串必須是合法的 PHP 代碼,且必須以分號結尾。
如果沒有在代碼字符串中調用 return
語句,則返回 NULL
。如果代碼中存在解析錯誤,則 eval()
函數返回 false。
1
2
3
4
5
6
7
8
9
10
11
|
$a = "hello" ; $res = eval ( "return $a;" ); print_r( $res ); // 在賦值時必須用反斜杠對$標示符進行轉義 eval ( "\$str = \"$str\";" ); echo $str ; |
二、利用遞歸將數組轉碼
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
/** * 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將數組編碼gbk和utf-8相互轉換的內容到這就基本結束了,文章介紹的很詳細,具有一定的參考價值,希望這篇文章對大家的學習和工作能帶來一定的幫助。