-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すでに 1 つの引数を取り、1 つの値を返すため、これは同じことを行います。

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

しかし実際には、strip_tags入ってくるすべての値をひとまとめにするのは悪い考えであり、ほとんどの問題は解決しません。値の内容と用途に応じて、各値を個別にエスケープ/サニタイズする必要があります。The Great Escapism (または、テキスト内のテキストを操作するために知っておくべきこと)を参照してください。

于 2013-06-18T11:13:22.830 に答える
2

を誤用しarray_mapます。ここで上書きする必要があります$_GET。コールバックが新しい配列の要素を返すことをarray_map期待しています(このキー用)。

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

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