(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 中将废弃不设置参数的行为。PHP 8.0.0
起,result
参数是强制的。
没有返回值。
版本 | 说明 |
---|---|
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 之外的变量这个章节。