-2

In the footer of each page I have a footer with flags to change language thanks to the 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>

I want to make these dynamic links to adapt to all pages of the site, so I did this:

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

The problem is when I click on the links to change languages, it adds a language parameter like this:

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

So how can I do that if the lang parameter is already present in $_SERVER['REQUEST_URI'], just replace it in the link

If possible a simple and effective solution (when it will be called at each page loading)

Rocstar
  • 1,427
  • 3
  • 23
  • 41
  • Possible duplicate of [Manipulate a url string by adding GET parameters](https://stackoverflow.com/questions/5809774/manipulate-a-url-string-by-adding-get-parameters) – MrSmile Jul 03 '18 at 09:07

1 Answers1

1

Do it using following steps:

  • Convert query params in url to array.
  • Rewrite value of lang parameter.
  • Convert array to query string and use in url.

And the code will be:

<?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>
Lovepreet Singh
  • 4,792
  • 1
  • 18
  • 36