如何在链接上保留特定的网址参数?

时间:2016-06-13 20:00:38

标签: php

我有以下网址:

http://website.com/?utm_source=1&utm_campaign=2&utm_medium=3

当用户使用这些参数访问我的网站时,我网页上的所有链接都会获取参数并与其原始网址合并。

所以,如果链接是:

http://website.com/link.html

它将成为:

http://website.com/link.html?utm_source=1&utm_campaign=2&utm_medium=3

但我的Google Analytics(分析)对这么多数据感到困惑。我只需要保留utm_campaign

即使我有其他参数,是否可以仅获取utm_campaign的值并应用于我的网址?

这是我目前的代码:

if (isset($_REQUEST['utm_campaign']) {
    $queryURL = "?" . preg_replace("/(s=[a-zA-Z%+0-9]*&)(.*)/", "$2", $_SERVER['QUERY_STRING'], -1);
    $queryURL = preg_replace("/q=([a-z0-9A-Z-\/])+&(.*)/", "$2", $queryURL, -1);
    $GLOBALS["queryURL"] = $queryURL;
} else {
    $GLOBALS["queryURL"] = 0;
}

2 个答案:

答案 0 :(得分:1)

使用$_GET数组而不是查询字符串:

if (isset($_REQUEST['utm_campaign'])) {
    $query_string = '?utm_campaign=' . $_REQUEST['utm_campaign'];
} else {
    $query_string = '';
}

然后,当您创建其他链接时,将$query_string连接到它们。

答案 1 :(得分:0)

是的,这是可能的:

if (isset($_GET['utm_campaign'])) {
  $newUrl = $oldUrl.(strpos($oldUrl,'?') ? '&' : '?').'utm_campaign='.$_GET['utm_campaign'];
}

这段代码会将旧网址更改为新网址。它将旧URL的任何参数考虑在内。我使用$_GET,因为您不需要$_POST中的$_REQUEST