如何一次剥离数组的所有项目?

时间:2010-08-06 08:09:53

标签: php

我需要同时stripslashes数组的所有项目。

知道我该怎么办?

6 个答案:

答案 0 :(得分:23)

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);

答案 1 :(得分:11)

对于单维数组,array_map将执行:

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

对于多维数组,您可以执行以下操作:

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

最后一个可用于修复magic_quotes,请参阅this comment

答案 2 :(得分:5)

您可以使用array_map

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

答案 3 :(得分:4)

我找到了这个类/函数

 <?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;
}
?>

这个blog它确实对我有帮助,现在我可以通过相同的函数传递变量,数组和对象......

答案 4 :(得分:0)

递归解析数组,使用此解决方案,您不必复制数组

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;
}

答案 5 :(得分:-1)

数组的任何递归函数:

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); }

代码:

+ (NSMutableDictionary *)updateQuery:(NSMutableDictionary *)currentQuery toSearchAfterAccountPaginationSequence:(NSString *)accountPaginationSequence {

    //try1
    NSMutableDictionary *mutableQuery = currentQuery.mutableCopy;
    NSMutableDictionary *where =  mutableQuery[@"where"].mutableCopy;

    where[@"account_pagination_sequence"] = @{ @"lt" : accountPaginationSequence };
    mutableQuery[@"where"] =  where;

    return mutableQuery;
}