получить — php GET_ несколько

Привет, ребята, извините, но я новичок в php, на моем сайте у меня есть несколько языков с GET .. Пример site.com/index.php?lang=en в меню навигации у меня есть такой код

<?php
$url = $_SERVER[REQUEST_URI];
$query = parse_url($url, PHP_URL_QUERY);
// Returns a string if the URL has parameters or NULL if not
if ($query) {
$url .= '&lang=';
} else {
$url .= '?lang=';
}
?>
<li><a href="<?php echo $url;?>en">

Моя проблема в том, когда установлен язык. Пример site.com/index.php?lang=en, когда пользователь меняет язык, добавляет язык на сайт.com/index.php?lang=en.&lang = гр.

Я хочу «заменить» язык и не иметь URL, как site.com/index.php?lang=gr&Ланг = ы&Ланг = ы&Ланг = ы&Ланг = ы

Спасибо вам, ребята

1

Решение

попробуйте это, он управляет всеми типами строк запроса, которые вы можете получить

<?php

$url = $_SERVER[REQUEST_URI];
$url_without_query_string = strtok($url, '?');
$query = array();
parse_str(parse_url($url, PHP_URL_QUERY), $query);
$query['lang'] = 'en';

$new_url = $url_without_query_string . '?' . http_build_query($query);
?>
<li><a href="<?php echo $new_url; ?>">
1

Другие решения

Если при передаче строки запроса вы проверяете, lang является частью этой строки, используя $_GET['lang'] тогда вы можете правильно решить, хотите ли вы добавить новый по умолчанию или использовать существующий.

<?php
$default_lang = 'en'

$url = $_SERVER[REQUEST_URI];
$query = parse_url($url, PHP_URL_QUERY);
// Returns a string if the URL has parameters or NULL if not
if ($query) {
// we have a querystring
// does it contain a lang already or not
$url .= isset($_GET['lang'] ? '' : "&lang=$default_lang";
} else {
// nothing in the querystring so force a lang
$url .= "?lang=$default_lang";
}
?>
<li><a href="<?php echo $url;?>">
0

Я думаю, что лучше использовать переменную сеанса.
Если пользователь меняет язык, вы перезаписываете только значение сеанса var.

0
По вопросам рекламы [email protected]