parse_str
(PHP 4, PHP 5, PHP 7, PHP 8)
parse_str — 將字串解析成多個變數
說明
$string, array &$result): void
   如果 string 是 URL 傳遞入的查詢字串(query string),則將它解析為變數並設定到目前作用域(如果提供了 result 則會設定到該陣列里 )。
  
參數
- 
string
- 
      輸入的字串。 
- 
result
- 
      如果設定了第二個變數 result, 變數將會以陣列元素的形式存入到這個陣列,作為替代。警告極度不建議 在沒有 result參數的情況下使用此函式, 並且在 PHP 7.2 中將廢棄不設定參數的行為。
返回值
沒有返回值。
更新日誌
| 版本 | 說明 | 
|---|---|
| 8.0.0 | result是必須項。 | 
| 7.2.0 | 不帶第二個參數的情況下使用 parse_str() 會產生 E_DEPRECATED警告。 | 
範例
示例 #1 parse_str() 的使用
<?php
$str = "first=value&arr[]=foo+bar&arr[]=baz";
// 推薦用法
parse_str($str, $output);
echo $output['first'];  // value
echo $output['arr'][0]; // foo bar
echo $output['arr'][1]; // baz
// 不建議這麼用
parse_str($str);
echo $first;  // value
echo $arr[0]; // foo bar
echo $arr[1]; // baz
?>
   由於 PHP 的變數名不能帶「點」和「空格」,所以它們會被轉化成下劃線。
   用本函式帶 result 參數,也會應用同樣規則到陣列的鍵名。
   
示例 #2 parse_str() 名稱改寫
<?php
parse_str("My Value=Something");
echo $My_Value; // Something
parse_str("My Value=Something", $output);
echo $output['My_Value']; // Something
?>
註釋
注意:
所有建立的變數(或者在設定第二個參數的情況下,返回陣列里的值), 都已經 urldecode() 了。
注意:
要獲取目前的
QUERY_STRING,可以使用 $_SERVER['QUERY_STRING'] 變數。 所以你可能想要閱讀 來自 PHP 之外的變數這個章節。
注意:
本函式受 magic_quotes_gpc 設定的影響, 和 $_GET、 $_POST 在 PHP 中填充變數相似, parse_str() 也使用了同樣的機制。
參見
- parse_url() - 解析 URL,返回其組成部分
- pathinfo() - 返回檔案路徑的資訊
- http_build_query() - 產生 URL-encode 之後的請求字串
- urldecode() - 解碼已編碼的 URL 字串