Php/docs/function.parse-str
parse_str
(PHP 4, PHP 5, PHP 7)
parse_str — 将字符串解析成多个变量
说明
parse_str
( string $encoded_string
[, array &$result
] ) : void
如果 encoded_string
是 URL 传递入的查询字符串(query string),则将它解析为变量并设置到当前作用域(如果提供了 result
则会设置到该数组里 )。
参数
encoded_string
输入的字符串。
result
如果设置了第二个变量
result
, 变量将会以数组元素的形式存入到这个数组,作为替代。Warning
极度不建议 在没有
result
参数的情况下使用此函数,并且在 PHP 7.2 中将废弃不设置参数的行为。在函数中动态设置变量会和 register_globals 有同样的问题。
阅读「安全」中 使用 Register Globals 的章节,解释了它为什么是危险的。
返回值
没有返回值。
更新日志
版本 | 说明 |
---|---|
7.2.0 | 不带第二个参数的情况下使用 parse_str() 会产生
|
范例
Example #1 parse_str() 的使用
<?php$str = "first=value&arr[]=foo+bar&arr[]=baz";// 推荐用法parse_str($str, $output);echo $output['first']; // valueecho $output['arr'][0]; // foo barecho $output['arr'][1]; // baz// 不建议这么用parse_str($str);echo $first; // valueecho $arr[0]; // foo barecho $arr[1]; // baz?>
由于 PHP 的变量名不能带「点」和「空格」,所以它们会被转化成下划线。
用本函数带 result
参数,也会应用同样规则到数组的键名。
Example #2 parse_str() 名称改写
<?phpparse_str("My Value=Something");echo $My_Value; // Somethingparse_str("My Value=Something", $output);echo $output['My_Value']; // Something?>
注释
Note:
所有创建的变量(或者在设置第二个参数的情况下,返回数组里的值), 都已经 urldecode() 了。
Note:
要获取当前的
QUERY_STRING
,可以使用$_SERVER['QUERY_STRING']
变量。 所以你可能想要阅读 来自 PHP 之外的变量这个章节。
Note:
本函数受 magic_quotes_gpc 设置的影响, 和
$_GET
、$_POST
在 PHP 中填充变量相似, parse_str() 也使用了同样的机制。
参见
- parse_url() - 解析 URL,返回其组成部分
- pathinfo() - 返回文件路径的信息
- http_build_query() - 生成 URL-encode 之后的请求字符串
- urldecode() - 解码已编码的 URL 字符串