我正在将REQUEST_URI解析为数组。
现在我有以下代码:
private function load_url_vars()
{
if (preg_match('/^.+\?(.+)$/', $_SERVER["REQUEST_URI"], $matches))
{
$varpairs = preg_split("/&/", $matches[1]);
foreach ($varpairs as $varpair)
{
if (preg_match('/^([A-Za-z_]+)=(.*)$/', $varpair, $varmatch))
{
$this->urlvars[$varmatch[1]] = urldecode($varmatch[2]);
}
}
}
}
这样做是否有任何安全问题?这是解析它的好方法吗?
编辑:语言
答案 0 :(得分:14)
你也可以在内置函数中使用php。这将是一种有效的方式。
$urlArr=parse_url($_SERVER['REQUEST_URI']);
parse_str($urlArr['query'], $output);
print_r($output);
答案 1 :(得分:6)
没有安全问题,但您的解决方案非常繁琐。已经可以使用parse_str
(和parse_url
来完成分割路径)。或者只是在你的情况下:
list($path, $qs) = explode("?", $_SERVER["REQUEST_URI"], 2);
parse_str($qs, $this->urlvars);
答案 2 :(得分:1)
为什么不使用$_GET
dictionary?
答案 3 :(得分:1)
$the_array = explode('/', trim($_SERVER['REQUEST_URI'], '/'));