开发者

stripping a query string with php (preg_replace)

http://www.chuck开发者_如何学JAVAecheese.com/rotator.php?cheese=4&id=1

I want to take out the id, leaving the cheese to stand alone. I tried:

$qs = preg_replace("[^&id=*]" ,'',$_SERVER[QUERY_STRING]);

But that said I was using an improper modifier. I want to remove "$id=" and whatever number comes after it. Are regexp really as hard as they seem for me?


You're getting an improper modifier because you need to surround your expression with an arbitrary delimeter. I tend to use ! because I rarely want to look for that but /, ~ and others are common. So:

$qs = preg_replace('!&id=.*!', '', $_SERVER['QUERY_STRING']);

The other way to do this is using parse_url(). For example:

$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;

Note: this requires the pecl_http extension, which you have to compile yourself on Windows it seems.


If the ID really can be anything, try this:

$qs = preg_replace("/(&|?)id=[^&]+/", '', $_SERVER[QUERY_STRING]);

If the ID is definitely a number, this one should do the trick:

$qs = preg_replace("/(&|?)id=\d+/", '', $_SERVER[QUERY_STRING]);
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜