我通过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']);
但是当存在文件名或其他参数时,这不起作用。 ....感谢任何帮助。
答案 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);
}
?>