从url中删除旧的$ _GET

时间:2015-12-01 15:50:09

标签: url get href

我的网站上的网址出现了问题。我试图获取给定GET参数的链接,但我也得到了我之前的参数。

我的网址如下:

www.cdwinkel.dev/search-results?genre=Pop&medium=DVD&medium=Single。

应该是:

www.cdwinkel.dev/search-results?genre=Pop&medium=Single。

我正在运行以下代码:

$data['url'] = createurl();   

function createurl(){
    $i = 1;
    $string = "?";
    $keys = array_keys($_GET);
    foreach($_GET as $get){
        if($get != ""){
        $string .= $keys[$i] . "=" . $get ."&";
        $i++;
        }
    }
    $string = rtrim($string, "&");
    return $string;
}

$ i = 1,因为我的数组中的第一个值是空的。

我的按钮看起来像这样:

<a href='".$data['url'].'&medium='.$names[$i]."'>

我想我应该在href标签中设置&amp; medium =。$ names [$ i] , 但我不会在我的函数中获得新的$ names [$ i],所以如果我不添加它,我就不会获得新的url。

我期待你的回应。

此致 Kars Takens

1 个答案:

答案 0 :(得分:0)

此时我已经使用正确的数组键和值创建了一个数组。

 $url = array_slice($_GET, 1);

返回以下数组:

array (size=2)
    'genre' => string 'Pop' (length=3)
    'medium' => string 'DVD' (length=3)

在此之后我将其解码为一个新字符串:

genre=Pop&medium=DVD

我在foreach循环中创建了6个按钮,但是我得到了&amp; medium ='VALUE'两次。这只发生在第一次之后。所以我的按钮第一次运行良好。

<?php
$names = array_keys($data['tellen']);
$i = 0;
foreach($data['tellen'] as $m){
     echo "<li><a href='search-results?".$data['url'].'&medium='.$names[$i]."'>". $names[$i] ." <span class='product-amount'>(". $m[0]->count. ")</span></a></li>";
     $i++;
}

希望您能够进一步了解这些信息。

我在forloop中添加了这个问题解决了我的问题:

foreach($data['tellen'] as $m){
if(isset($_GET['medium'])){
     unset($_GET['medium']);
     $url = array_slice($_GET, 1);
     $data['url'] = urldecode(http_build_query($url));
     }
echo "<li><a href='search-results?".$data['url'].'&medium='.$names[$i]."'>". $names[$i] ." <span class='product-amount'>(". $m[0]->count. ")</span></a></li>";
    $i++;
}