在URL上附加GET变量,而不知道它是否已经包含变量

时间:2013-05-08 22:59:44

标签: php get

我有一个页面,我要输出一个a元素,该元素链接到当前页面,在某种情况下添加了一个GET变量。这是我的代码:

<?php 
    $Path=$_SERVER['REQUEST_URI'];
    $URI=home_url(  ).$Path;
    if($_GET['showall']==1) 
        {
        $URI = strtok($URI, '?'); //This removes the GET variables
        $showWhat = "Show 12 per Page";
        } 
    else 
        {
        $URI .= '?' . http_build_query(array('showall'=>1));
        $showWhat="Show All";
        }
?>

所以它的作用是如果showall为1,它只返回当前页面的URL而不是showall变量。如果它不是1,则它会将?showall=1附加到URL的末尾。

如果URL中还没有其他GET变量,则此方法很有用。如果有,我会得到这样的网址:

http://example.com?orderby=price?showall=1

这显然不起作用,因为变量之间缺少&amp;

如果已存在GET变量,如何修改我的代码。

请考虑如果showall = 1,那么我想输出除了showall之外的其他GET变量的URL。 E.g http://example.com?orderby=price?。我只是使用我已经使用过的东西来删除所有GET变量。

(这是一个wordpress网站,因此使用了home_url()

1 个答案:

答案 0 :(得分:1)

怎么样:

$URI .= '?' . http_build_query(array_merge($_GET,array('showall'=>1)));

L.E: 也许:

if($_GET['showall']==1) {
    $get = $_GET;
    unset($get['showall']);//since you don't want this anymore
    $URI = home_url('your-path-here') . '?'. http_build_query($get);
}

请注意,home_url()可以使用uri参数,因此将相对url传递给home_url()函数(即:home_url('plugins/superplugin/the-page.php'))。