2017-03-07 32 views
1

好家伙我很抱歉,但我是新手到PHP,在我的地盘我有GET。例site.com/index.php?lang=en多语言的导航菜单我有这样PHP的get_多个

<?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。

我想 “取代” lang和没有像site.com/index.php?lang=gr &一个URL LANG = EN & LANG = EN & LANG = EN & LANG = EN

谢谢你们

+3

为什么不使用'$ _GET'会更简单,而且你不会导致multipe参数 – RiggsFolly

+0

我使用$ _GET。但在未来,我想有多个$ _GETs – Mafiozaros3

回答

0

如果当你通过一个查询字符串,你是否lang是使用$_GET['lang']那么你可以,如果你想添加一个新的默认的一个或使用现有的一个正确决定字符串的一部分。

+0

这是个好主意,但我有2种语言,或3-4-5,如何将“gr,en,ro .. etc”添加到链接? – Mafiozaros3

+0

当然,当用户单击某个选择时,点击某些内容会将正确的“lang = ??'添加到URL中”。我的代码只保留选中的一个,如果没有选择,则使用'en'作为默认值 – RiggsFolly

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; ?>"> 
0

我认为是更好地USEA会话变量。 如果用户更改语言,则只覆盖会话变量的de值。