Создать динамический URL с помощью GET (для href) - PullRequest
0 голосов
/ 03 июля 2018

В нижнем колонтитуле каждой страницы есть нижний колонтитул с флагами для изменения языка благодаря 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

Итак, как я могу это сделать, если параметр lang уже присутствует в $_SERVER['REQUEST_URI'], просто замените его в ссылке

По возможности простое и эффективное решение (когда оно будет вызываться при каждой загрузке страницы)

1 Ответ

0 голосов
/ 03 июля 2018

Сделайте это, используя следующие шаги:

  • Преобразование параметров запроса в 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...