代码之家  ›  专栏  ›  技术社区  ›  Starx

如何同时对数组的所有项进行条带斜杠?

php
  •  8
  • Starx  · 技术社区  · 15 年前

    我需要 stripslashes 一个数组中的所有项。

    我知道怎么做吗?

    6 回复  |  直到 9 年前
        1
  •  23
  •   Gatman    15 年前
    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);
    
        2
  •  11
  •   Alix Axel    15 年前

    对于一维阵列, array_map 将做:

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

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

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

    最后一个可以用来修复magic_引号,请参见 this comment .

        3
  •  5
  •   Gumbo    15 年前

    你可以使用 array_map :

    $output = array_map('stripslashes', $array);
    
        4
  •  4
  •   Nathan Bomshteyn    12 年前

    我发现了这个类/函数

     <?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 它确实帮助了我,现在我可以通过相同的函数传递变量、数组和对象…

        5
  •  0
  •   Centurion    15 年前

    重复分析数组,使用此解决方案,不必使数组重复

    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;
    }
    
        6
  •  -1
  •   T.Todua Laurent W.    9 年前

    数组的任何递归函数:

    $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); 
    }
    
    推荐文章