我正在通过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);
}
?>