我正在尝试向 url 添加一些不同的 GET 变量。
我可以轻松地将 header 重定向到当前页面 url,然后只需在 url 中添加 $_GET['test']。
我的问题是我有一些已经在 url 中的 GET 变量。我想做的是:
检查url中是否有GET变量
如果没有,则在 url 末尾使用新的 GET['test'] 变量重定向到当前 url。
如果有,但 url 中没有 GET['test'] 变量,则将其他 GET 值保留在 url 中,并将 GET['test'] 变量添加到完整 url 的末尾字符串
如果有,并且 url 中有 GET['test'] 变量,则将其他 GET 值保留在 url 中,并将 GET['test'] 变量值与新值交换。
我怎样才能检查所有这些条件?
最佳答案
简单的方法是:
$params = array_merge( $_GET, array( 'test' => 'testvalue' ) );
$new_query_string = http_build_query( $params );
这并不能保证 test
会在最后。如果出于某种奇怪的原因你需要它,你可以这样做:
$params = $_GET;
unset( $params['test'] );
$params['test'] = 'testvalue';
$new_query_string = http_build_query( $params );
但是请注意,PHP 查询字符串参数解析可能与其他应用程序存在一些互操作性问题。特别是,PHP 不接受任何参数的多个值,除非它具有类似数组的名称。
然后你就可以转发了
( empty( $_SERVER['HTTPS'] ) ? 'http://' : 'https://' ) .
( empty( $_SERVER['HTTP_HOST'] ) ? $defaultHost : $_SERVER['HTTP_HOST'] ) .
$_SERVER['REQUEST_URI'] . '?' . $new_query_string
关于php - 如何在 php 中将 GET 变量添加到当前 url 的末尾?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3162725/