2015-09-03 35 views
0

我有这行代码:如何从URL中删除选定的GET值

echo str_replace('%7E', '~', $_SERVER['REQUEST_URI']); 

,这将返回:

http://example.com?pageview=myview&edit=true&message=tester 

我的问题是,我怎样才能从删除message=testerecho str_replace('%7E', '~', $_SERVER['REQUEST_URI']);

任何想法请..任何帮助将不胜感激。

+1

你应该能够用[str_replace函数]做到这一点(http://php.net/manual/en/function。 str-replace.php)或[str_ireplace](http://php.net/manual/en/function.str-ireplace.php),你有没有试过这些? – YouSer

+1

你想从字符串的末尾移除* always *是'message = tester'吗? – kittykittybangbang

+0

就像@kittykittybangbang所说的那样。它总是必须是'tester'就是'message'的值吗? – YouSer

回答

1

如果您只需要从字符串末尾删除已知的子字符串,则可以使用rtrim()

PHP docs

RTRIM - 剥去空格(或其它字符)从字符串

rtrim()的端部接受2个参数,其中第二个是可选的。第一个是字符串,第二个(如果存在)是要从字符串末尾移除的子字符串。

所以,你的情况:

echo rtrim(str_replace('%7E', '~', $_SERVER['REQUEST_URI']),'message=tester'); 

这将返回:

http://example.com?pageview=myview&edit=true& 
0

这是一般的解决方案,以消除任何GET参数,由爆炸整个URL?然后获取参数并最近找到要删除的密钥

$url = explode("?",str_replace('%7E', '~', $_SERVER['REQUEST_URI'])); 
$params = explode("&",$url[1]); 
foreach ($params as $key=>$value) { 
    if (strstr($value,"message=")===0) unset($params[$key]); 
} 
$url[1]=implode("&",$params); 
echo implode("?",$url); 

就是这样。如果你想删除的参数,如果它有一个特定值做这样的事情:

if (strstr($value,"message=tester")===0) unset($params[$key]);