我有一个URL,我想要替换值,如果他们在那里,但添加,如果他们不是。用新值替换查询字符串中的值PHP
我的网址是例如:http://www.example.com/online/admin/users?p=Name&sort=user&dir=desc
,我想编写一个脚本,如果它已经存在或将其添加,则会再次写出URL中的查询。我想把它写一个“一”的标签,但有不同的价值我选择排序和DIR
我发现在一个叫网站一些代码Add Querystring Variable
function add_querystring_var($url, $key, $value) {
$url = preg_replace('/(.*)(?|&)' . $key . '=[^&]+?(&)(.*)/i', '$1$2$4', $url . '&');
$url = substr($url, 0, -1);
if (strpos($url, '?') === false) {
return ($url . '?' . $key . '=' . $value);
} else {
return ($url . '&' . $key . '=' . $value);
}
}
我唯一的问题是我不知道如何使用它来做我想要的。
这是我走到这一步,去用它
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>'; ?>
但这回空白。还有什么想法?感谢所有迄今为止输入的球员。
需要被'parse_str($ urlarray [“查询”],$ queryarray)'。 – deceze 2012-07-26 09:31:01
你是对的...纠正。 – FatalError 2012-07-26 09:33:53
应该指出'http_build_url'是一个PECL扩展。 – deceze 2012-07-26 09:36:36