在页面加载时将额外的参数添加到URL中

时间:2016-02-18 20:36:17

标签: php redirect preg-replace

我通过URL传递一个url作为param值。 http://www.domain1.com?url=http://domain.com 我想设置条件为添加传递url的查询字符串添加额外的参数。 (例如:如果域名为111.com,则应添加foo = 123)。 我试过了

$url = preg_replace('{http://www.111.com}','http://www.111.com?foo=111/',$_GET['url']);
$url = preg_replace('{http://www.222.com}','http://www.222.com?foo2=222/',$_GET['url']);

但是当存在文件名或其他参数时,这不起作用。 ....感谢任何帮助。

3 个答案:

答案 0 :(得分:0)

我会考虑不使用preg_replace的不同方法。

首先使用http://php.net/manual/en/function.parse-url.php

解析网址
$url = '//www.example.com/path?googleguy=googley';    
$parsedUrl = parse_url($url); // will contain parsed parts of the url as array with keys. domain is under 'host' key

然后做你的逻辑并决定你要添加什么

if ($parsedUrl['host'] === 'www.example.com') {
    $queryParts[] = '123';
}

然后使用concating和build查询构造最终的url。 http://php.net/manual/en/function.http-build-query.php

$queryParts[] = $parsedUrl['query']; // keep original query part also.
$newUrl = sprintf(%s%s%s, $parsedUrl['host'], $parsedUrl['path'], http_build_query($queryParts))

echo $newUrl;

答案 1 :(得分:0)

你应该在PHP中尝试这样的东西

switch($_SERVER['SERVER_NAME']){
    case 'www.111.com':
         $_GET['url'] =  $_SERVER['SERVER_NAME'].'foo=111';
    case 'www.222.com':
         $_GET['url'] =  $_SERVER['SERVER_NAME'].'foo=123'
}

依此类推,如果我没有误解这个问题,希望它有所帮助

答案 2 :(得分:0)

如果问题出现在正则表达式中,请尝试以下方法。它会将文本EXTRA添加到您的网址。然后你可以用它做任何事情。

 <?php

$url=array("http://www.222.comasdjkasdjkasjd","http://www.111.com123123123");

foreach($url as $eachurl) {
        echo preg_replace('/(http:\/\/www.*?com)/i','$1'."EXTRA",$eachurl);

}

?>