大家好我很抱歉,但我是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">
我的问题是lang设置好了。示例site.com/index.php?lang=en当用户更改lang时将lang添加到site.com/index.php?lang=en&lang=gr。
我想&#34;替换&#34; lang并没有像site.com/index.php?lang=gr&lang=en&lang=en&lang=en&lang=en
这样的网址 谢谢你们答案 0 :(得分: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 :(得分:0)
如果您传递了查询字符串,则使用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;?>">
答案 2 :(得分:0)
我认为最好使用会话变量。 如果用户更改语言,则只覆盖会话变量的de值。