沒有理由讓你使用這種方法。你有很多可用的工具比使用一些正則表達式方法好得多。
首先,無論您在何處構建該查詢字符串,都應該使用數組訪問表示法。所以我們可以說你現在有這樣的字段的表單:
<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_#'的事情,這是一種反模式,你應該使用一個數組。 –