php - 如何在 php 中将 GET 变量添加到当前 url 的末尾?

标签 php url variables get

我正在尝试向 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/

相关文章:

php - iOS 没有打开我的 https ://website SSL Certificates

java - 在 Java 中使用 Apache HTTP 处理丢失的资源

jquery - 在 jquery 中获取外部 url 的 html

javascript - 脚本错误 : variable is undefined

php - 如何使用 Laravel 在一条 route 获取两个 id?

PHPExcel 数据系列不工作

php - 如何使用我从另一个表获得的键从另一个表获取用户名

html - 防止在 Angular 7 中的散列前添加斜杠

iOS 以编程方式从 View Controller 设置 View 变量

php - 如何将简单的搜索查询传递到 URL 中?