如何将url参数添加到当前网址?

时间:2011-12-19 14:15:31

标签: html url

目前我在http://example.com/topic.php?id=14,我希望通过不定义当前网址来建立http://example.com/topic.php?id=14&like=like的链接。像<a href="&like=like">Like</a>一样。然而,最后一个显示我http://example.com/&like=like

7 个答案:

答案 0 :(得分:14)

function currentUrl() {
    $protocol = strpos(strtolower($_SERVER['SERVER_PROTOCOL']),'https') === FALSE ? 'http' : 'https';
    $host     = $_SERVER['HTTP_HOST'];
    $script   = $_SERVER['SCRIPT_NAME'];
    $params   = $_SERVER['QUERY_STRING'];

    return $protocol . '://' . $host . $script . '?' . $params;
}

然后用类似的东西添加你的值

echo currentUrl().'&value=myVal';

答案 1 :(得分:12)

在向其添加其他参数的同时,无法编写保留现有查询字符串的相对URI。

你必须:

topic.php?id=14&like=like

答案 2 :(得分:8)

我知道我已经迟到了,但您可以通过使用http构建查询来执行?id=14&like=like,如下所示:

http_build_query(array_merge($_GET, array("like"=>"like")))

无论您拥有什么GET参数,如果like是一个参数,它将被覆盖,否则它将被包含在最后。

答案 3 :(得分:3)

如果您希望使用“like”作为参数,您的链接必须是:

<a href="/topic.php?like=like">Like</a>

更可能的是你想要的:

<a href="/topic.php?id=14&like=like">Like</a>

答案 4 :(得分:0)

也许你可以编写如下函数:

var addParams = function(key, val, url) {
  var arr = url.split('?');
  if(arr.length == 1) {
    return url + '?' + key + '=' + val;
  }
  else if(arr.length == 2) {
    var params = arr[1].split('&');
    var p = {};
    var a = [];
    var strarr = [];
    $.each(params, function(index, element) {
      a = element.split('=');
      p[a[0]] = a[1];
      })
    p[key] = val;
    for(var o in p) {
      strarr.push(o + '=' + p[o]);
    }
    var str = strarr.join('&');
    return(arr[0] + '?' + str);
  }
}

答案 5 :(得分:0)

如果要在JavaScript中添加URL参数,请参见this answer。如此处的建议,您可以在现代浏览器中使用URLSeachParams API,如下所示:

<script>
function addUrlParameter(name, value) {
  var searchParams = new URLSearchParams(window.location.search)
  searchParams.set(name, value)
  window.location.search = searchParams.toString()
}
</script>

<body>
...
  <a onclick="addUrlParameter('like', 'like')">Like this page</a>
...
</body>

答案 6 :(得分:0)

它是not elegant,但可以作为单行<a>元素来实现

<a href onclick="event.preventDefault(); location+='&like=like'">Like</a>