如何使具有值的变量在 url php 上出现一次

How To Make A variable with value appear once on the url php

我这里有一个有效的代码,它的作用是向当前 url 添加一个变量和值。 我所做的是使用

获取当前的 url

PHP

function c_url() {
   $cUrl = "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
   $vUrl = str_replace("&", "&", $cUrl);

   return $vUrl;
}

然后当我单击 html link 时,它会向 url

添加一个具有值的变量

HTML 链接

<a href="<?php echo c_url(); ?>&brand=hello">Brand</a><br>
<a href="<?php echo c_url(); ?>&color=red">Color</a><br>
<a href="<?php echo c_url(); ?>&size=M">Size</a><br>
<a href="<?php echo c_url(); ?>&price=12000">price</a>

问题是,当我多次单击一个按钮时,它只会不断重复 url 上的相同变量和值,直到它被填满。 所以我想要的是,当我单击 link 并且值出现在 url 上时,我不希望它在我单击相同的 link 时再次出现,但我仍然想要其他link我点击一次就会点击。

有办法吗?

您需要从查询字符串中删除不想复制的值。您可以通过将该参数的名称传递给您的函数并将其从 $_GET 超全局变量中删除,然后构建一个新字符串来实现。

function c_url($key) {
    unset($_GET[$key]);
    $queryString = http_build_query($_GET);

    return $_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME'].'?'.$queryString;
}

// Pass "b" to the function to remove it from the echo'd URL
echo c_url('b') . '&b=5';

输出:

http://http://www.example.com/test.php?a=1&c=3&b=5

演示

$_GET = [
    'a' => 1,
    'b' => 2,
    'c' => 3,
];

$_SERVER = [
    'HTTP_HOST' => 'http://www.example.com',
    'SCRIPT_NAME' => '/test.php',
];

function c_url($key) {
    unset($_GET[$key]);
    $queryString = http_build_query($_GET);

    return $_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME'].'?'.$queryString;
}

echo c_url('b') . '&b=5';

Live example