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 字串