2016-05-30 39 views
1

我有以下代碼是否有處理重複鍵的parse_str + http_build_query替代方法?

$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

爲什麼不讓一個人做你明確需要的東西? – Martin

+0

'$ post = str_replace('foo =','foo [] =',$ post);'SCNR – PiTheNumber

+3

'http:// php.net/manual/ru/function.parse-str.php#76792' – splash58

回答

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; 
相關問題