Привет, ребята, извините, но я новичок в 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&Ланг = ы&Ланг = ы&Ланг = ы&Ланг = ы
Спасибо вам, ребята
попробуйте это, он управляет всеми типами строк запроса, которые вы можете получить
<?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; ?>">
Если при передаче строки запроса вы проверяете, 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;?>">
Я думаю, что лучше использовать переменную сеанса.
Если пользователь меняет язык, вы перезаписываете только значение сеанса var.