So konvertieren Sie ein PHP-Array in eine Codierung: 1. Verwenden Sie die Funktion iconv, um das Array zu durchlaufen, um den Zeichensatz zu konvertieren. 2. Verwenden Sie die Methoden var_export und eval, um die Konvertierung zu erreichen. 3. Verwenden Sie die Rekursion, um das Array zu transkodieren.
Empfohlen: „PHP-Video-Tutorial“
Drei Lösungen zum Konvertieren chinesischer Zeichenkodierungen in PHP-Arrays zueinander
1. Verwenden Sie die Funktion iconv, um das Array zu durchlaufen und den Zeichensatz zu konvertieren
/* * 字符串/二维数组/多维数组编码转换 * @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. Verwenden Sie die Methode 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); }
Das Prinzip ist sehr einfach
var_export setzt den zweiten Parameter auf true, gibt die Array-Prototypzeichenfolge zurück, konvertiert die Zeichenfolge in UTF-8-Kodierung und verwendet dann eval um die Rückgabe durchzuführen (ähnlich einer anonymen Funktion?), löst dies das Problem perfekt.
eval()-Funktionszusammenfassung:
Bedingungen: Die eval()-Funktion berechnet die Zeichenfolge gemäß dem PHP-Code. Die Zeichenfolge muss gültiger PHP-Code sein und mit einem Semikolon enden.
Wenn im Codestring keine Return-Anweisung aufgerufen wird, wird NULL zurückgegeben. Wenn der Code Parsing-Fehler enthält, gibt die Funktion eval() false zurück.
$a ="hello"; $res = eval("return $a;"); print_r($res); //
Sie müssen Backslashes verwenden, um den $-Bezeichner zu maskieren, wenn Sie eval("$str = "$str";"); echo $str;
3 zuweisen. Verwenden Sie Rekursion, um das Array zu transkodieren (wenn eval deaktiviert ist).
/** * 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; } } }
Das obige ist der detaillierte Inhalt vonSo konvertieren Sie ein PHP-Array in eine Codierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!