Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PHP中将查询字符串转换为变量?_Php_Arrays_Query String_Name Value - Fatal编程技术网

如何在PHP中将查询字符串转换为变量?

如何在PHP中将查询字符串转换为变量?,php,arrays,query-string,name-value,Php,Arrays,Query String,Name Value,我在mysql表中存储了如下字符串: ?name1=value1&name2=value2&name3=value3 最初,这些数据只用于将GET数据发送到另一个脚本,但现在我发现自己需要它来做其他事情 PHP中是否有预定义的函数将这些对转换为变量或数组?或者我必须手动完成吗?这个(名字不好的)PHP函数可以完成这项工作,不过您需要先去掉最初的问号 $arr = array(); parse_str($str, $arr); print_r($arr); 手册页中提到了此功能的一些注意事项:

我在mysql表中存储了如下字符串:

?name1=value1&name2=value2&name3=value3

最初,这些数据只用于将GET数据发送到另一个脚本,但现在我发现自己需要它来做其他事情

PHP中是否有预定义的函数将这些对转换为变量或数组?或者我必须手动完成吗?

这个(名字不好的)PHP函数可以完成这项工作,不过您需要先去掉最初的问号

$arr = array();
parse_str($str, $arr);
print_r($arr);
手册页中提到了此功能的一些注意事项:

  • 如果不使用第二个数组参数调用它,它将把值作为局部变量写入当前范围。如果字符串包含可能更改程序中已有变量值的键,则这可能是危险的
  • magic\u quotes\u gpc
    设置会影响此函数的操作方式,因为这是PHP内部用于解码查询字符串和URL编码的帖子正文的例程
如果您需要一个不受
magic\u quotes\u gpc
设置影响的便携式解决方案,那么手动编写解码函数非常简单,可以使用
urldecode
处理值编码:

function parseQueryString($queryString) {
    $result = array();
    $pairs = explode("&", $queryString);
    foreach ($pairs as $pair) {
        $pairArr = split("=", $pair, 2);
        $result[urldecode($pairArr[0])] = urldecode($pairArr[1]);
    }
    return $result;
}
此解决方案可能会比内置的
parse_args
函数稍慢一些,但无论如何配置PHP,都有一致行为的好处。当然,您还需要首先从一开始就去掉
,这两个示例中都没有包含。

可能会有用

$arr=?name1=value1&name2=value2&name3=value3
var_export($arr);