odstranění proměnné z QUERY STRING
7 příspěvků
Archiv diskusního fóra
Fórum je uzavřené a slouží pouze ke čtení. Některé informace mohou být zastaralé.
-
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.