我正在将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]);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这样做是否有任何安全问题?这是解析它的好方法吗?
编辑:语言
Sha*_*ngh 17
你也可以在内置函数中使用php.这将是一种有效的方式.
$urlArr=parse_url($_SERVER['REQUEST_URI']);
parse_str($urlArr['query'], $output);
print_r($output);
Run Code Online (Sandbox Code Playgroud)
没有安全问题,但您的解决方案非常繁琐.已经可以通过parse_str(以及parse_url分割路径)来实现这一点.或者在你的情况下:
list($path, $qs) = explode("?", $_SERVER["REQUEST_URI"], 2);
parse_str($qs, $this->urlvars);
Run Code Online (Sandbox Code Playgroud)