zec*_*ude 22 php variables url get
我正在尝试向URL添加一些不同的GET变量.
我可以轻松地将标题重定向到当前页面网址,然后只需在网址中添加$ _GET ['test'].
我的问题是我已经在url中有一些GET变量.我想做的是:
检查url中是否有任何GET变量
如果没有,则使用url末尾的新GET ['test']变量重定向到当前url.
如果有,但url中没有GET ['test']变量,则将其他GET值保留在url中,并将GET ['test']变量添加到完整url字符串的末尾
如果有,AND在URL中有一个GET ['test']变量,则将其他GET值保留在url中,并用新值交换GET ['test']变量值.
我怎样才能检查所有这些条件?
Art*_*cto 38
简单的方法是:
$params = array_merge( $_GET, array( 'test' => 'testvalue' ) );
$new_query_string = http_build_query( $params );
Run Code Online (Sandbox Code Playgroud)
这并不保证test会在最后.如果由于一些奇怪的原因你需要它,你可以这样做:
$params = $_GET;
unset( $params['test'] );
$params['test'] = 'testvalue';
$new_query_string = http_build_query( $params );
Run Code Online (Sandbox Code Playgroud)
但请注意,PHP查询字符串参数解析可能与其他应用程序存在一些互操作性问题.特别是,PHP不接受任何参数的多个值,除非它具有类似数组的名称.
然后你可以转发
( empty( $_SERVER['HTTPS'] ) ? 'http://' : 'https://' ) .
( empty( $_SERVER['HTTP_HOST'] ) ? $defaultHost : $_SERVER['HTTP_HOST'] ) .
$_SERVER['REQUEST_URI'] . '?' . $new_query_string
Run Code Online (Sandbox Code Playgroud)
我基于Artefacto的答案创建了这个简单的PHP函数.
function addOrUpdateUrlParam($name, $value)
{
$params = $_GET;
unset($params[$name]);
$params[$name] = $value;
return basename($_SERVER['PHP_SELF']).'?'.http_build_query($params);
}
Run Code Online (Sandbox Code Playgroud)