从多维输入数组中删除无效的UTF-8


Removing invalid UTF-8 from a multidimensional input array?

$_POST数组可以是多维的。我有代码删除无效的UTF,但也完全删除子数组。

运行此代码:

print_r($_POST);      
$UTF8_Input = array_map('_StripInvalidUTF8', $_POST);
print_r($UTF8_Input);
function _StripInvalidUTF8($str){
   return iconv('UTF-8', 'UTF-8//IGNORE', $str);      
}

生产:

//$_POST:
Array
(
    [Quantity] => 1
    [Options] => Array
        (
            [84] => 585
        )    
)

// $UTF8_Input:
Array
(
    [Quantity] => 1
    [Options] => 
)

选项数组正在被截断。任何关于如何检查有效数据的子数组的建议,如果他们完好无损?

试试

function _StripInvalidUTF8($str){
    if(is_array($str)) return array_map('_StripInvalidUTF8', $str);
        return iconv('UTF-8', 'UTF-8//IGNORE', $str);      
}