如何获取和更改URL变量PHP

Caf*_*ots 15 html php hyperlink

嗨,任何人都可以帮助我,我有一个像这样的URL

parent/child/a=1&b=2$c=3
Run Code Online (Sandbox Code Playgroud)

然后我有一个链接,将该变量添加到该URL

<a href="<?php echo $_SERVER["REQUEST_URI"]."&d=test1";?>">LINK 1</a>
<a href="<?php echo $_SERVER["REQUEST_URI"]."&d=test2";?>">LINK 2</a>
Run Code Online (Sandbox Code Playgroud)

每次我点击我的链接时,变量d到URL都会像这样继续复制

parent/child/a=1&b=2&c=3&d=test2&d=test2&d=test2&d=test1&d=test1
Run Code Online (Sandbox Code Playgroud)

我知道$ _SERVER ["REQUEST_URI"]继续获取当前的URL,这就是我获得该结果的原因.我已经尝试了$ _SERVER [""]的一些属性.我喜欢的是改变d变量值,任何想法如何去做.任何回复都非常感谢.谢谢!

Mic*_*uen 41

$query = $_GET;
// replace parameter(s)
$query['d'] = 'new_value';
// rebuild url
$query_result = http_build_query($query);
// new link
<a href="<?php echo $_SERVER['PHP_SELF']; ?>?<?php echo $query_result; ?>">Link</a>
Run Code Online (Sandbox Code Playgroud)


小智 6

modify_url_query($url, array('limit' => 50));
Run Code Online (Sandbox Code Playgroud)

我在 url 中修改查询的功能

function modify_url_query($url, $mod){

$purl = parse_url($url);

$params = array();

if (($query_str=$purl['query']))
{
    parse_str($query_str, $params);

    foreach($params as $name => $value)
    {
        if (isset($mod[$name]))
        {
            $params[$name] = $mod[$name];
            unset($mod[$name]);
        }
    }
}        

$params = array_merge($params, $mod);

$ret = "";

if ($purl['scheme'])
{
    $ret = $purl['scheme'] . "://";
}    

if ($purl['host'])
{
    $ret .= $purl['host'];
}    

if ($purl['path'])
{
    $ret .= $purl['path'];
}    

if ($params)
{
    $ret .= '?' . http_build_query($params);
}    


if ($purl['fragment'])
{
    $ret .= "#" . $purl['fragment'];
}        

return $ret;

}
Run Code Online (Sandbox Code Playgroud)


Ven*_*tra 5

要删除重复添加查询参数,请执行以下操作

// parse the url
$pathInfo = parse_url($_SERVER['REQUEST_URI']);
$queryString = $pathInfo['query'];
// convert the query parameters to an array
parse_str($queryString, $queryArray);
// add the new query parameter into the array
$queryArray['d'] = 1;
// build the new query string
$newQueryStr = http_build_query($queryArray);

// construct new url
?>
<a href="<?php echo $pathInfo['host'].'?'.$newQueryStr;?>">LINK 1</a>
Run Code Online (Sandbox Code Playgroud)


Vin*_*abu 5

尝试使用以下表达式,它应该工作

preg_replace("#&d=.*&#", '&d=newvalue&', $_SERVER['REQUEST_URI'])
Run Code Online (Sandbox Code Playgroud)

  • 请注意任何找到这个答案并尝试它的人.如果您希望更改的变量是第一个变量,由于前面缺少"&"符号,这将不起作用. (5认同)