Как stripslashes все элементы массива сразу?

Мне нужно, чтобы stripslashes все элементы массива сразу.

Любая идея, как я могу это сделать?

 foreach ($your_array as $key=>$value) { $your_array[$key] = stripslashes($value); } 

или для массива многих уровней:

 function stripslashes_deep($value) { $value = is_array($value) ? array_map('stripslashes_deep', $value) : stripslashes($value); return $value; } $array = array("f\\'oo", "b\\'ar", array("fo\\'o", "b\\'ar")); $array = stripslashes_deep($array); print_r($array); 

Для uni-мерных массивов array_map будет делать:

 $a = array_map('stripslashes', $a); 

Для многомерных массивов вы можете сделать что-то вроде:

 $a = json_decode(stripslashes(json_encode($a)), true); 

Этот последний может быть использован для исправления magic_quotes, см. Этот комментарий .

Вы можете использовать array_map :

 $output = array_map('stripslashes', $array); 

Я нашел этот класс / функцию

  <?php /** * Remove slashes from strings, arrays and objects * * @param mixed input data * @return mixed cleaned input data */ function stripslashesFull($input) { if (is_array($input)) { $input = array_map('stripslashesFull', $input); } elseif (is_object($input)) { $vars = get_object_vars($input); foreach ($vars as $k=>$v) { $input->{$k} = stripslashesFull($v); } } else { $input = stripslashes($input); } return $input; } ?> 

в этом блоге, и это действительно помогло мне, и теперь я могу передавать переменные, массивы и объекты через одну и ту же функцию …

Массив массива рекурсивный, с этим решением вам не нужно дублировать ваш массив

 function addslashes_extended(&$arr_r){ if(is_array($arr_r)) { foreach ($arr_r as &$val){ is_array($val) ? addslashes_extended($val):$val=addslashes($val); } unset($val); } else $arr_r=addslashes($arr_r); return $arr_r; } с function addslashes_extended(&$arr_r){ if(is_array($arr_r)) { foreach ($arr_r as &$val){ is_array($val) ? addslashes_extended($val):$val=addslashes($val); } unset($val); } else $arr_r=addslashes($arr_r); return $arr_r; } 

Любая рекурсивная функция для массива:

$result= Recursiver_of_Array($array, 'stripslashes');

код:

 function Recursiver_of_Array($array,$function_name=false){ //on first run, we define the desired function name to be executed on values if ($function_name) { $GLOBALS['current_func_name']= $function_name; } else {$function_name=$GLOBALS['current_func_name'];} //now, if it's array, then recurse, otherwise execute function return is_array($array) ? array_map('Recursiver_of_Array', $array) : $function_name($array); }