我有以下代码
$post = 'foo=bar&foo=baz';
parse_str($post, $parameters);
收率:
array(1) {
'foo' =>
string(3) "baz"
}
我无法修改$post
。
我正在寻找的是parse_str
的版本(处理边缘情况并解码为parse_str),但允许重复的密钥。
它应与http_build_query
兼容,以重新组合$post
数据(修改后)。
有没有人实现这样的方法还是有lib?
我的搜索还没有产生。
答案 0 :(得分:1)
基于http://php.net/manual/ru/function.parse-str.php#76792我决定对我的处理内联 - 没有将整个思想转换为某种结构并将其重新构建。这就是我最终的结果:
function process_query_str($str) {
# result array
$parts = array();
# split on outer delimiter
$pairs = explode('&', $str);
# loop through each pair
foreach ($pairs as $i) {
# split into name and value
list($name,$value) = explode('=', $i, 2);
$value = urldecode($value);
// **** DO PROCESSING ****
$value = strtoupper($value);
// reassemble
$parts[] = http_build_query(array($name=>$value));
}
# return result array
return implode('&', $parts);
}
$query = process_query_str('foo=bar&foo=baz');
echo $query;