我要为$ _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'
如何为键和值保持相同的结构?``
答案 0 :(得分: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
是一个坏主意,并没有真正解决大多数问题。您需要单独转义/清理每个值,具体取决于它是什么以及它的用途。请参阅The Great Escapism (Or: What You Need To Know To Work With Text Within Text)。
答案 1 :(得分:2)
您滥用array_map
。你应该在这里覆盖$_GET
。并且array_map
期望回调返回新数组的元素(对于此键)。
$_GET = array_map('clean', $_GET);
function clean($el)
{
return strip_tags($el);
}