2

parse_str()次のようにして配列に値を追加できることを知っています。

parse_str( 'a[]=1&a[]=2&a[]=3' );
parse_str( 'a[0]=1&a[1]=2&a[2]=3' );

これらは両方とも以下を生成します。

Array (
  [0] => 1
  [1] => 2
  [2] => 3
)

私は次のような配列を生成しようとしています:

parse_str( 'a[]=1,2,3' );

a[i]=毎回入力する必要がないように、これを行う方法はありますか?

4

1 に答える 1

2

parse_str()自分が何をしているのか確信が持てない限り、 を使用しないでください。(以下で説明します。)代わりに、予期しない変数を変更しない JSON のようなものをお勧めします。これは、かなり高速で、標準化されており、生成/消費が容易です。

$str = '{"items":[1,2,3]}'
$obj = json_decode($data);

var_export($obj->items);

収量:

 array (
  0 => 1,
  1 => 2,
  2 => 3,
) 

「どうして parse_str を使わないのですか?」

  1. 不適切な入力により、予期しない変数が上書きされてコードが簡単に壊れる可能性があります
  2. 悪意のある入力は、セキュリティ リスクをもたらす可能性があります。

たとえば、これを試してください:

$input = '_SERVER[DOCUMENT_ROOT]=/foo';
parse_str($input);
echo($_SERVER['DOCUMENT_ROOT']);

うわー、誰かがサーバー構成データを格納している変数の 1 つを変更することに成功しました。これにより、ファイルを間違った場所に保存したり、「のサブフォルダーである必要がある」チェックをバイパスしたりするコンテンツ管理コードなどを簡単に壊してしまう可能性があります。

于 2013-09-11T02:55:15.267 に答える