2013-03-30 96 views
0

我有一個字符串像這樣保存在MySQL表:如何將查詢字符串轉換爲PHP中的變量?

?name1=value1&name2=value2&name3=value3

最初這個數據只會被用來獲得數據發送到另一個劇本,但現在我發現自己需要它的其他東西。

PHP中是否有預定義的函數來將這些對變爲變量或數組?或者我將不得不手動去做?

回答

5

(功能欠佳的)PHP函數parse_str可以做到這一點,但您需要先修剪掉最初的問號。

$arr = array(); 
parse_str($str, $arr); 
print_r($arr); 

有一些注意事項這個函數提到的手冊頁:

  • 如果你不使用第二個數組參數將值寫入到當前範圍的局部變量。如果字符串中包含可能會改變已存在於程序中的變量值的鍵,那麼這會很危險。
  • magic_quotes_gpc設置影響此函數的操作方式,因爲這是PHP內部用於解碼查詢字符串和urlencoded POST主體的例程。

如果需要未受到magic_quotes_gpc設置一個便攜的解決方案則是相當簡單的手工編寫的解碼功能,採用urldecode辦理值編碼:

function parseQueryString($queryString) { 
    $result = array(); 
    $pairs = explode("&", $queryString); 
    foreach ($pairs as $pair) { 
     $pairArr = split("=", $pair, 2); 
     $result[urldecode($pairArr[0])] = urldecode($pairArr[1]); 
    } 
    return $result; 
} 

該解決方案可能會比內置的parse_args功能稍慢,但無論PHP配置如何,都具有一致的行爲優勢。當然,你將再次需要從頭開始剝離?,這並不包含在任何示例中。

1

Var_export可能會有用。

$arr=?name1=value1&name2=value2&name3=value3 
var_export($arr);