2017-05-01 32 views
0

删除ID我有这样获取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']; ?> 

URL是有可能改变的ID,使URL像

一个网址
url:- url.php?gender=gender&&brand=brand1&&id=$newId 
where $newId can be any number except the one that is present in the url 

回答

2
function remove_querystring_var($url, $key) { 
    $url = preg_replace('/(.*)(?|&)' . $key . '=[^&]+?(&)(.*)/i', '$1$2$4', $url . '&'); 
    $url = substr($url, 0, -2); 
    return $url; 
} 

这会做这项工作,传递你的网址和密钥你想在这个功能

remove_querystring_var("url.php?gender=male&&grand=brand1&&id=$id","id")除去,它会从您的网址

+0

感谢它禾像魅力一样 – lazyme114

1

删除ID获取的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; 
1

您可以改为使用$_SERVER['QUERY_STRING']。此外,如果你的'id'值并不总是在最后,那么得到一个substr就不会很健壮。相反,把它变成一个关联数组,并摆弄它。

例如,开始与/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