php ile bir sorgu dizesi sıyırma (preg_replace)

2 Cevap php

http://www.chuckecheese.com/rotator.php?cheese=4&id=1

Ben tek başına stand peyniri bırakarak, id almak istiyorum. Denedim:

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

Ama bu bir yanlış değiştirici kullandığını söyledi. Ben "= $ id" kaldırmak istiyorum ve ondan sonra gelen ne olursa olsun sayısı. Sıradanifade gerçekten de zor onlar benim için gibi görünüyor musunuz?

2 Cevap

Eğer keyfi bir Ayraç ile ifade çevreleyen gerekir çünkü bir yanlış değiştirici alıyoruz. Ben nadiren bunun için bakmak istiyorum ama / !, çünkü ~ kullanma eğiliminde ve diğerleri yaygındır. Yani:

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

Bunu yapmanın başka yolu parse_url() kullanıyor. Örneğin:

$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: bu görünüyor Windows kendiniz derlemek zorunda pecl_http uzantısı gerektirir.

Kimliği gerçekten bir şey olabilir, bu deneyin:

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

Kimliği kesinlikle bir sayı ise, bu bir hile yapmak gerekir:

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