在 php 中以干净的方式将参数添加到查询字符串
Add params to query string in a clean way in php
如果可能的话,我想找到一个 clean(没有太多的字符串操作 preg_*)
我知道要替换一个参数我会做
$_GET['info'] = "newinfo";
并删除一个参数:
unset($_GET['info']);
有没有类似的东西我可以用?
当然,在我 "unset" 或 "set" 之后,我正在构建一个新查询。
(http_build_query).
最后我试着做这个:
/index.php?foo=bar
到
/index.php?foo=bar&info=newinfo
只需这样做:
$get = $_GET;
$get['new'] = 'some value';
function getPath()
{
// Stolen from
$request = parse_url($_SERVER['REQUEST_URI']);
$path = $request["path"];
return rtrim(str_replace(basename($_SERVER['SCRIPT_NAME']), '', $path), '/');
}
header("Location: " . getPage() . http_build_query($get));
以上代码将创建一个查询字符串并将其附加到当前 URL 并重定向到该位置。显然,您可以通过替换 getPage() 函数结果并将您自己的结果放在那里来更改您重定向到的位置,这只是证明了答案的前提。
http_build_query
的文档是一个很好的起点。
实际上,它将做的是将关联数组转换为 HTTP 查询字符串。
如果可能的话,我想找到一个 clean(没有太多的字符串操作 preg_*)
我知道要替换一个参数我会做
$_GET['info'] = "newinfo";
并删除一个参数:
unset($_GET['info']);
有没有类似的东西我可以用?
当然,在我 "unset" 或 "set" 之后,我正在构建一个新查询。 (http_build_query).
最后我试着做这个:
/index.php?foo=bar
到
/index.php?foo=bar&info=newinfo
只需这样做:
$get = $_GET;
$get['new'] = 'some value';
function getPath()
{
// Stolen from
$request = parse_url($_SERVER['REQUEST_URI']);
$path = $request["path"];
return rtrim(str_replace(basename($_SERVER['SCRIPT_NAME']), '', $path), '/');
}
header("Location: " . getPage() . http_build_query($get));
以上代码将创建一个查询字符串并将其附加到当前 URL 并重定向到该位置。显然,您可以通过替换 getPage() 函数结果并将您自己的结果放在那里来更改您重定向到的位置,这只是证明了答案的前提。
http_build_query
的文档是一个很好的起点。
实际上,它将做的是将关联数组转换为 HTTP 查询字符串。