php GET_ multiple

时间:2017-03-07 14:37:21

标签: php get lang

大家好我很抱歉,但我是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

这样的网址 谢谢你们

3 个答案:

答案 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值。