Potřeboval bych odstranit proměnnou z $_SERVER['QUERY_STRING']. Dejme tomu že v $_SERVER['QUERY_STRING'] se můžou vyskytnout řetězce:
id1=agvgv&od32=%gh?_k
od32=agvgv&od32=%gh?_k
od32=agvg
Prostě cokoliv a já potřebuju odstranit proměnnou $od32 nějakým regulárním výrazem. Nic univerzálního mě bohužel nenapadá. Něco jako:
$query_strg = Ereg_Replace("&od32=[[:alnum:]]*", "", $query_strg);
hmm, a co tak se ptat na $_GET['tvoje prom']?
nebo se da udelat
unset($_GET['tocochciodstranit'])
a rekonstruovat query string ze zbyleho pole $_GET[] treba
$q = array();
foreach( $_GET as $k=>$v) {
$q[] = $k.'='.$v;
}
$novy_query_string = join('&', $q);
Hmm, ale jak vidíš tak se na to neptám :o) Ptám se na ten regulární výraz. Takže za odpověď děkuji, ale je OT.
P.S. Join() netřeba, HTTP_Build_Query() by stačilo (pokud máme PHP5 samozřejmě).
stip, potrebujes odstranit neco z query stringu. nemusi to byt nutne reg_replace, ktery je pomerne narocny. Vys mas funkcni, jasne reseni.
P.S. a jelikoz tady nemas php5, tak join() potrebujes.
Já stále nechápu, proč mi nutíš "funkční" řešení. Nechci se tu rozepisovat o důvodech proč to řešení řeší úplně něco jiného než chci řešit. Ani se na žádné řešení neptám. Ptám se na jednoduchý regulární výraz z kterým si nevím rady. Jestli to nikdo neví - nevadí, nějak se k tomu doberu sám, ale otázka je myslím jasná.
Join nepotřebuju, bo nejsem tady :o) ale to zase rozebíráme uplně něco jinýho, než je téma.
Přehodnotil jsem to, ten původní dotaz opravdu vypadá na první pohled lamácky, protože předpokládá řešení, které obecně není šťastné. Nicméně není a důvody jsou takové:
UnSetovat $_GET[] nechci, protože ji dále používám. Poněvadž si nejsem jistý kde všude a kód je komplikovaný, navrhl jsem toto - sice složité - ale průhledné řešení. Prostě se to tady jako rychlý opravný patch hodí.
$_GET si muzes schovat do jine promenne a to pak pouzit, ale to jsi psal, ze nechces, takze regularni vyraz, ereg se priznam jsem nepouzil, pouzivam preg_*.
Tam by to mohlo vypadat jako:
$sem = preg_replace('/od32=[^&]*&?/', '', $odtud);
tedy odstrani vse od toho 'od32 po dalsi & pokud tam nejake je.
Pokud tam je &, coz asi neni, tak je treba to trochu prestrouhat.