http://www.chuckecheese.com/rotator.php?cheese=4&id=1
我想取出身份证,让奶酪独自站立。我试过了:
$qs = preg_replace("[^&id=*]" ,'',$_SERVER[QUERY_STRING]);
但是那说我使用了一个不正确的修饰符。我想删除“$ id =”以及之后的任何数字。 regexp真的和我们看起来一样难吗?
答案 0 :(得分:3)
你得到一个不正确的修饰符,因为你需要用任意的分隔符包围你的表达式。我倾向于使用!
因为我很少想要找到它,但/
,~
和其他人很常见。所以:
$qs = preg_replace('!&id=.*!', '', $_SERVER['QUERY_STRING']);
另一种方法是使用parse_url()
。例如:
$s = 'http://www.chuckecheese.com/rotator.php?cheese=4&id=1';
$url = parse_url($s);
parse_str($url['query'], $qs);
unset($qs['id']);
$url['query'] = http_build_str($qs);
$out = http_build_url($url);
echo $out;
注意:这需要pecl_http扩展名,您必须在Windows上自行编译。
答案 1 :(得分:1)
如果ID确实可以是任何内容,请尝试:
$qs = preg_replace("/(&|?)id=[^&]+/", '', $_SERVER[QUERY_STRING]);
如果ID肯定是一个数字,那么这个应该可以解决问题:
$qs = preg_replace("/(&|?)id=\d+/", '', $_SERVER[QUERY_STRING]);