我将为 $_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'
如何保持键和值的结构相同?``
回调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
所有传入值的毯子是一个坏主意,并不能真正解决大多数问题。您需要根据每个值的含义和用途单独转义/清理每个值。请参阅伟大的逃避现实(或:使用文本中的文本需要知道的内容)。
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);
}