ホームページ >バックエンド開発 >PHPの問題 >PHP配列をエンコーディングに変換する方法

PHP配列をエンコーディングに変換する方法

藏色散人
藏色散人オリジナル
2020-08-18 10:04:302433ブラウズ

PHP 配列をエンコーディングに変換する方法: 1. iconv 関数を使用して配列を走査し、文字セットを変換します; 2. var_export メソッドと eval メソッドを使用して変換を実行します; 3. 再帰を使用して配列をトランスコードします。

PHP配列をエンコーディングに変換する方法

推奨: 「PHP ビデオ チュートリアル

中国語の文字エンコーディングを PHP 配列に変換する 3 つの方法解決策

1. iconv 関数を使用して配列を走査し、文字セットを変換します

/*
* 字符串/二维数组/多维数组编码转换
* @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)){//判断是否是二维数组
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;
}

2. 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 は 2 番目のパラメーターを 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;

三、再帰を使用してください配列をトランスコードします (eval が無効な場合)

/** * 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配列をエンコーディングに変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。