2017-03-07 29 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值。