在页面加载时向 URL 添加额外的参数


adding extra params into URL when page loads

我正在通过URL传递URL作为参数值。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']);

但是当有文件名或其他参数时,这不起作用。....任何帮助将不胜感激。

我会考虑不同的方法,而根本不preg_replace。

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

$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';
}

然后,使用连接和构建查询构造最终网址。 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;

你应该在 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'
}

等等,如果我没有误解这个问题,希望它有帮助

如果问题出在正则表达式上,请尝试以下操作。它会在您的网址中添加额外的文本。然后你可以用它做任何事情。

 <?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);
}
?>