Php 用新值替换查询字符串中的值

Php 用新值替换查询字符串中的值,php,function,Php,Function,我有一个URL,我想替换存在的值,但如果不存在则添加 例如,我的URL是:http://www.example.com/online/admin/users?p=Name&sort=user&dir=desc,我想写一个脚本,如果URL已经存在,它将再次在URL中写出查询,如果不存在,则添加查询。我想将其写入一个“a”标记,但选择的sort和dir值不同 我在一个叫做 我唯一的问题是我不知道如何使用它来做我想做的事情 这就是我到目前为止要用的代码 add_querystring_var("htt

我有一个URL,我想替换存在的值,但如果不存在则添加

例如,我的URL是:
http://www.example.com/online/admin/users?p=Name&sort=user&dir=desc
,我想写一个脚本,如果URL已经存在,它将再次在URL中写出查询,如果不存在,则添加查询。我想将其写入一个“a”标记,但选择的sort和dir值不同

我在一个叫做

我唯一的问题是我不知道如何使用它来做我想做的事情

这就是我到目前为止要用的代码

add_querystring_var("http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'],"sort","lvl");
add_querystring_var("http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'],"dir","asc");
但我不知道从这里该做什么,因为这并不是为我写任何东西

我知道这很简单,但我对PHP的这一领域还不熟悉D

编辑

迄今为止的代码

$url='http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
function add_querystring_var($url, $key, $value) {
    $urlarray = parse_url($url);
    parse_str($urlarray['query'],$queryarray);
    $queryarray[$key]=$value;
    $queryarray = http_build_query($queryarray);
    return http_build_url($url,array('query'=>$queryarray),HTTP_URL_JOIN_QUERY);
}
$url_id=add_querystring_var($url,"sort","lvl");
$url_id=add_querystring_var($url,"dir",$dir);

<?php echo '<a href="'.$url.'">New Anchor</a>'; ?>
$url='http://'.$\u服务器['http\u主机].$\u服务器['REQUEST\u URI'];
函数add\u querystring\u var($url、$key、$value){
$urlarray=parse_url($url);
parse_str($urlarray['query'],$queryarray);
$queryarray[$key]=$value;
$queryarray=http\u build\u query($queryarray);
返回http\u build\u url($url,array('query'=>$queryarray),http\u url\u JOIN\u query);
}
$url\u id=add\u querystring\u var($url,“sort”,“lvl”);
$url\u id=add\u querystring\u var($url,“dir”,$dir);
但结果却是一片空白。还有什么想法吗?感谢大家迄今为止的投入。

我建议使用和

像这样打电话

add_querystring_var("http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'],'sort','id');
或者针对你的具体情况

<?php 
$url='http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
$url=add_querystring_var($url,"sort","lvl");
$url=add_querystring_var($url,"dir", $dir);
echo '<a href="'.$url.'">New Anchor</a>'; 
?>


使用到目前为止的测试结果,您可能希望对其进行如下修改:

$url='http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
//your add_querystring_var() returns the new url, it doesn't echo it to the screen
$url=add_querystring_var($url,"sort","lvl");
$url=add_querystring_var($url,"dir","asc");

echo '<a href="'.$url.'">New Anchor</a>';
$url='http://'.$\u服务器['http\u主机].$\u服务器['REQUEST\u URI'];
//您的add_querystring_var()返回新的url,它不会将其回显到屏幕上
$url=add_querystring_var($url,“sort”,“lvl”);
$url=add_querystring_var($url,“dir”,“asc”);
回声';

这需要是
parse_str($urlarray['query',$queryarray)
。应该指出的是
http\u build\u url
是一个PECL扩展。谢谢,但这似乎破坏了一些东西。这就是我的a标签中的内容:
现在查看上面的解决方案。我更新了它。这对我有用。非常感谢你!你是个救生员D
<?php 
$url='http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
$url=add_querystring_var($url,"sort","lvl");
$url=add_querystring_var($url,"dir", $dir);
echo '<a href="'.$url.'">New Anchor</a>'; 
?>
$url='http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
//your add_querystring_var() returns the new url, it doesn't echo it to the screen
$url=add_querystring_var($url,"sort","lvl");
$url=add_querystring_var($url,"dir","asc");

echo '<a href="'.$url.'">New Anchor</a>';