使用GET创建动态URL(用于href)

时间:2018-07-03 08:58:16

标签: php url get

在每个页面的页脚中,都有一个带有用于更改语言的标志的页脚,这要感谢GET:

    <a href="<?= $url.$var ?>lang=en_US"><img class="flag" src="images/us_flag.png" /><span>English</span></a> | 
    <a href="<?= $url.$var ?>lang=fr_FR"><img class="flag" src="images/fr_flag.png" /><span>Français</span></a> | 
    <a href="<?= $url.$var ?>lang=de_DE"><img class="flag" src="images/de_flag.png" /><span>Deutsch</span></a> | 
    <a href="<?= $url.$var ?>lang=zh_CN"><img class="flag" src="images/ch_flag.png" /><span>中文</span></a>

我想制作这些动态链接以适应网站的所有页面,所以我这样做了:

<?php 
  $url = $_SERVER['REQUEST_URI'];
  $var = ($_GET) ? '&': '?';
?>

问题是,当我单击链接以更改语言时,它会添加一个语言参数,如下所示:

mysite.com/folder/?status=super&number=90&lang=fr_FR&lang=en_US&lang=en_US&lang=en_US

因此,如果$_SERVER['REQUEST_URI']中已经存在lang参数,我该怎么做,只需在链接中将其替换

如果可能的话,一个简单有效的解决方案(每次加载页面时都会调用它)

1 个答案:

答案 0 :(得分:1)

执行以下步骤:

  • 将url中的查询参数转换为数组。
  • 重写lang参数的值。
  • 将数组转换为查询字符串并在url中使用。

代码将是:

<?php
$url = $_SERVER['REQUEST_URI'];
$parts = parse_url($url);
parse_str($parts['query'], $query);
$domain = $parts['query'];
$query["lang"] = "en_US";
?>
<a href="<?= $domain . "?" . http_build_query($query); ?>"><img class="flag" src="images/us_flag.png" /><span>English</span></a> | 
<?php $query["lang"] = "fr_FR"; ?>
<a href="<?= $domain . "?" . http_build_query($query); ?>"><img class="flag" src="images/fr_flag.png" /><span>Français</span></a> | 
<?php $query["lang"] = "de_DE"; ?>
<a href="<?= $domain . "?" . http_build_query($query); ?>"><img class="flag" src="images/de_flag.png" /><span>Deutsch</span></a> | 
<?php $query["lang"] = "zh_CN"; ?>
<a href="<?= $domain . "?" . http_build_query($query); ?>"><img class="flag" src="images/ch_flag.png" /><span>中文</span></a>