我有这样的网址
url:- url.php?gender=male&&grand=brand1&&id=$id
eg. $id may be 1, 100 ,23, 1000 any number
我正在使用
获取网址<?php echo $_SERVER['REQUEST_URI']; ?>
是否可以更改ID并将网址设为
url:- url.php?gender=gender&&brand=brand1&&id=$newId
where $newId can be any number except the one that is present in the url
答案 0 :(得分:2)
function remove_querystring_var($url, $key) {
$url = preg_replace('/(.*)(?|&)' . $key . '=[^&]+?(&)(.*)/i', '$1$2$4', $url . '&');
$url = substr($url, 0, -2);
return $url;
}
这将完成工作,传递您要在此功能中删除的网址和密钥
ex remove_querystring_var("url.php?gender=male&&grand=brand1&&id=$id","id")
,它会从您的网址中删除ID
答案 1 :(得分:1)
获取id位置并使用子字符串删除id。
$url = $_SERVER['REQUEST_URI'];
#Get id position and remove && by subtracting 2 from length
$pos = strrpos($url,'id') - 2;
$url = substr($url, 0, $Pos);
echo $url;
答案 2 :(得分:1)
您可以改用$_SERVER['QUERY_STRING']
。
此外,如果你的身份是&#39;价值并不总是在最后,因此获得一个不太可靠的子系统。而是把它变成一个关联数组,然后摆弄它。
例如,从/url.php?gender=male&grand=brand1&id=999&something=else
parse_str($_SERVER['QUERY_STRING'], $parsed);
unset($parsed['id']);
// there may be a better way to do this bit.
$new_args = [];
foreach($parsed as $key=>$val){
$new_args[] = "$key=$val";
}
$new_arg_str = join($new_args, '&');
$self = $_SERVER['PHP_SELF'];
$new_endpoint = "$self?$new_arg_str";
echo $new_endpoint;
结果:/url.php?gender=male&grand=brand1&something=else
比正则表达式更容易辨认。
请记住,如果您要重定向(使用header("Location: whatever")
或其他方式),您需要警惕重定向循环。 if语句可以避免这种情况。
参考文献:
http://php.net/manual/en/reserved.variables.server.php
http://php.net/manual/en/function.parse-str.php
http://php.net/manual/en/function.unset.php