PHP需要修剪所有$ _POST变量

时间:2011-01-17 06:08:50

标签: php

需要你在不寻常的情况下提供帮助。我需要修剪所有$ _POST变量。

我有什么方法可以一次性完成,即使用单一功能吗?

我知道修剪($ _ POST)不会做,我必须做一些像

这样的功能
function sanatize_post(){
    foreach ($_POST as $key => $val)
        $_POST[$key] = trim($val);
}

但是,如果您有任何其他建议或意见,请帮助我。

由于

8 个答案:

答案 0 :(得分:13)

简单地

  $_POST = array_map("trim", $_POST);

但是如果$ _POST成员(即使其中一个)又是一个数组本身,那么使用递归版本:

    function array_map_deep( $value, $callback ) 
    {
        if ( is_array( $value ) ) {
            foreach ( $value as $index => $item ) {
                    $value[ $index ] = array_map_deep( $item, $callback );
            }
        } elseif ( is_object( $value ) ) {
            $object_vars = get_object_vars( $value );
            foreach ( $object_vars as $property_name => $property_value ) {
                    $value->$property_name = array_map_deep( $property_value, $callback );
            }
        } else {
            $value = call_user_func( $callback, $value );
        }
        return $value;
    }

答案 1 :(得分:9)

array_walk与自定义功能

一起使用
$clean_values = array();
array_walk($_POST, 'sanitize_post');

function sanitize_post($item, $key)
{
    $clean_values[$key] = trim($item);
    //optional further cleaning ex) htmlentities
}

答案 2 :(得分:8)

array_walk($_POST, 'trim')(请注意,当输入名称= foo [bar]转换为数组时,此想法可能会被破坏)

编辑:以上不正确。试试$_POST = array_map('trim', $_POST);

答案 3 :(得分:6)

这是一个单线程,既可以在单个值上工作,也可以在数组上递归工作:

$_POST = filter_var($_POST, \FILTER_CALLBACK, ['options' => 'trim']);

答案 4 :(得分:2)

您还可以使用我编写的代码,以防您想要清理字符串或使用一个函数的数组:

function sanitize ($value) {
    // sanitize array or string values
    if (is_array($value)) {
        array_walk_recursive($value, 'sanitize_value');
    }
    else {
        sanitize_value($value);
    }

    return $value;
}

function sanitize_value (&$value) {
    $value = trim(htmlspecialchars($value));
}

只需像这样使用它:

$post_sanitized = sanitize($_POST);
$apple_sanitized = sanitize('apple');

答案 5 :(得分:1)

只需使用:

array_walk($_POST, create_function('&$val', '$val = trim($val);')); 

现在你的$ _POST被修剪了。

答案 6 :(得分:1)

我认为使用匿名函数更好:

array_walk($_POST, function(& $value){
    $value = trim($value);
});

答案 7 :(得分:1)

其他答案对关联数组不起作用。这个递归函数将调整$ _POST数组中所有值的所有值。

{{1}}