【问题标题】:Remove older $_GET from url从 url 中删除旧的 $_GET
【发布时间】:2016-03-05 14:41:59
【问题描述】:

我的网站上的网址有一些问题。我正在尝试使用给定的 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 标记中设置 &medium=.$names[$i], 但我不会在我的函数中获得新的 $names[$i],所以如果我不添加它,我将不会获得新的 url。

期待您的回复。

真诚地, 卡尔斯拍摄

【问题讨论】:

  • 把你的参数放到一个数组里,然后用http_build_query代替你自己写的函数(严重缺乏,因为它不能正确处理URL编码。)
  • 我试过这个,但我得到了一个奇怪的回报。我想这是因为我以错误的方式创建我的数组。我的输入数组看起来像:0 => 'genre' => 'jazz'',1 => 'medium' => 'LP''。它应该是流派 => 爵士乐。但我无法完成这项工作
  • 那么以正确的方式构建您的输入数组,从...开始?
  • 我得到了正确的数组 atm。但我仍然对双参数遇到同样的问题。
  • 为什么,你的数组中有那些双打吗?您可能应该显示一些当前代码。

标签: url get href


【解决方案1】:

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

 $url = array_slice($_GET, 1);

这将返回以下数组:

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

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

genre=Pop&medium=DVD

我在 foreach 循环中创建了 6 个按钮,但我得到了 &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++;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多