没有理由让你使用这种方法。你有很多可用的工具比使用一些正则表达式方法好得多。
首先,无论您在何处构建该查询字符串,都应该使用数组访问表示法。所以我们可以说你现在有这样的字段的表单:
<input name="field_1" ... />
<input name="field_2" ... />
...
<input name="field_n" ... />
而应该做的:
<input name="field[1]" ... />
<input name="field[2]" ... />
...
<input name="field[n]" ... />
当您通过GET提交表单,这将在为您提供一个很好的阵列$_GET['field']
,它具有括号内的值。就像这样:
var_dump($_GET['field']);
/*
Outputs something like
Array(
[1] => ...,
[2] => ...,
...
[n] => ...
)
*/
如果您不需要执行顺序,可以用括号[]
得到一个0索引的数值数组。
你现在已经拥有了所有的值,没有任何字符串的正则表达式解析。
你应该知道的第二个工具是parse_str()
。如果您曾经遇到实际解析查询字符串的情况,请使用此操作(请勿使用explode()
)。
$query_string = 'field[1]=foo&field[2]=bar...'; // some query string
$query_string_data = array();
parse_str($query_string, $query_string_data);
var_dump($query_string_data);
/*
Outputs something like
Array(
'field' => Array (
[1] => ...,
[2] => ...,
...
[n] => ...
)
)
*/
什么是** _获得** ?? – 2014-02-14 00:28:03
这听起来像你在构建查询字符串时需要使用数组访问表示法。类似'fields [0] = foo&fields [1] = bar&fields [2] = abc'这样你就可以简单地访问'$ _GET ['fields']'中一个漂亮的,预建好的数组中的所有字段。只要知道,只要你看到自己在代码中做类似'key_#'的事情,这是一种反模式,你应该使用一个数组。 –