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() 会产生 E_DEPRECATED 警告。

范例

Example #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 参数,也会应用同样规则到数组的键名。

Example #2 parse_str() 名称改写

<?php
parse_str
("My Value=Something");
echo 
$My_Value// Something

parse_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() 也使用了同样的机制。

参见

关注编程学问公众号