如何在PHP中将查询字符串转换为变量?
我在mysql表中存储了如下字符串:如何在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); 手册页中提到了此功能的一些注意事项:
?name1=value1&name2=value2&name3=value3
最初,这些数据只用于将GET数据发送到另一个脚本,但现在我发现自己需要它来做其他事情
PHP中是否有预定义的函数将这些对转换为变量或数组?或者我必须手动完成吗?这个(名字不好的)PHP函数可以完成这项工作,不过您需要先去掉最初的问号
$arr = array();
parse_str($str, $arr);
print_r($arr);
手册页中提到了此功能的一些注意事项:
- 如果不使用第二个数组参数调用它,它将把值作为局部变量写入当前范围。如果字符串包含可能更改程序中已有变量值的键,则这可能是危险的
设置会影响此函数的操作方式,因为这是PHP内部用于解码查询字符串和URL编码的帖子正文的例程magic\u quotes\u gpc
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);