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']);

哇,有人设法更改了存储服务器配置数据的变量之一。这很容易破坏内容管理代码之类的东西,然后将文件保存到错误的位置,或者绕过“必须是子文件夹”检查。

于 2013-09-11T02:55:15.267 回答