-3

我将为 $_GET 和 $_POST 构建简单的过滤器函数。这是我的代码。

array_map('clean', $_GET);

function clean($el)
{
  $_GET[] = strip_tags($el);
}

var_dump($_GET);

// result
1 => 'One',
2 => 'Two'

// expected
'first' = 'One'
'second' = 'Two'

如何保持键和值的结构相同?``

4

2 回答 2

3

回调array_map需要返回一个值。array_map将为数组中的每个值调用回调并将其替换为返回的值。您不会在回调中更改数组本身。

$_GET = array_map('clean', $_GET);

function clean($el) {
    return strip_tags($el);
}

var_dump($_GET);

但实际上,既然strip_tags已经接受了一个参数并返回一个值,这将做同样的事情:

$_GET = array_map('strip_tags', $_GET);

但实际上,strip_tags所有传入值的毯子是一个坏主意,并不能真正解决大多数问题。您需要根据每个值的含义和用途单独转义/清理每个值。请参阅伟大的逃避现实(或:使用文本中的文本需要知道的内容)

于 2013-06-18T11:13:22.830 回答
2

You misuse array_map. You should overwrite here the $_GET. and array_map expects the callback to return the element of the new array (for this key).

$_GET = array_map('clean', $_GET);

function clean($el)
{
     return strip_tags($el);
}
于 2013-06-18T11:11:26.217 回答