获取URL并从中删除ID

时间:2017-05-01 07:45:04

标签: php url

我有这样的网址

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

3 个答案:

答案 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

http://php.net/manual/en/control-structures.foreach.php

http://php.net/manual/en/function.join.php