我想替换多维数组中的所有特殊字符:
array(1) {
["one"]=>
array(1) {
["two"]=>
array(1) {
[three]=>
array(1) {
["four"]=>
array(1) {
["five"]=>
array(1) {
["Ele╠phant"]=>
array(1) {
["My_Ele╠phant_walks.eps"]=>
array(3) {
["six"]=>
string(106) "one/two/three/four/five/Ele╠phant/My_Ele╠phant_walks.eps"
["seven"]=>
string(6) "seven"
["eight"]=>
string(19) "eight"
}
}
}
}
}
}
}
}
因此,它应该如下所示:
array(1) {
["one"]=>
array(1) {
["two"]=>
array(1) {
[three]=>
array(1) {
["four"]=>
array(1) {
["five"]=>
array(1) {
["Ele?phant"]=>
array(1) {
["My_Ele?phant_walks.eps"]=>
array(3) {
["six"]=>
string(106) "one/two/three/four/five/Ele?phant/My_Ele?phant_walks.eps"
["seven"]=>
string(6) "seven"
["eight"]=>
string(19) "eight"
}
}
}
}
}
}
}
}
对于字符串,有一个非常好的工具,它完全符合我的需要:
echo iconv('UTF-8', 'ISO-8859-1//TRANSLIT//IGNORE', $string);
我正在为数组寻找相同的东西
答案 0 :(得分:1)
您可以将数组转换为json字符串,转换此字符串中的特殊字符,然后将json字符串转换回数组。
$json = json_encode($array);
$json = iconv('UTF-8', 'ISO-8859-1//TRANSLIT//IGNORE', $json);
$array = json_decode($json, true);
答案 1 :(得分:1)
function a_iconv(array &$arr) {
foreach ($arr as $key => $val) {
if (is_array($val)) {
a_iconv($arr[$key]);
} else {
unset($arr[$key]);
$arr[iconv('UTF-8', 'ISO-8859-1//TRANSLIT//IGNORE', $key)] = iconv('UTF-8', 'ISO-8859-1//TRANSLIT//IGNORE', $val);
}
}
}
该功能应该这样做。
function a_iconv(array $src) {
$dst = array();
foreach ($src as $key => $val) {
if (is_array($val)) {
$dst[iconv('UTF-8', 'ISO-8859-1//TRANSLIT//IGNORE', $key)] = a_iconv($val);
} else {
$dst[iconv('UTF-8', 'ISO-8859-1//TRANSLIT//IGNORE', $key)] = iconv('UTF-8', 'ISO-8859-1//TRANSLIT//IGNORE', $val);
}
}
return $dst;
}
应该在不修改原始数组的情况下执行此操作,而是返回新版本。
这两个函数以递归方式应用于原始数组中的任何数组,并在任何非数组条目上应用iconv。我没有检查对象,因为我假设你的阵列中没有对象。如果恰好是这种情况,请使用get_object_vars()
。
答案 2 :(得分:1)
function custonDecode($src) {
$dst = array();
foreach ($src as $key => $val) {
if (is_array($val)) {
$dst[iconv('UTF-8', 'ISO-8859-1//TRANSLIT//IGNORE', $key)] = a_iconv($val);
} else {
$dst[$key] = iconv('UTF-8', 'ISO-8859-1//TRANSLIT//IGNORE', $val);
}
}
return $dst;
}
print_r(custonDecode($yourArray));