WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Få hela url-querystring och ta bort vissa delar (https://www.wn.se/forum/showthread.php?t=1057411)

secag 2013-03-31 19:50

Få hela url-querystring och ta bort vissa delar
 
Säg att du har en url som denna:

http://www.koskit.se?frukt=banan&grö...=v&v=t&ttt=fff
Förnkelat ser det ut såhär:
www.koskit.se?
frukt=banan&
grönsak=äpple&
färg=brun&
typ=hård&
c=v&
v=t&
ttt=fff

Och nu vill jag ha ut hela url-strängen, alltså allting som kommer efter '?'. Detta går ju bra med $_SERVER["QUERY_STRING"] men om jag inte villa ha vissa delar, som t.ex. färg=brun och v=t, hur skriver jag då?

yakuzaemme 2013-03-31 20:07

Är det $_GET du söker?

secag 2013-03-31 20:14

Jo men jag hade löst det innan med parse_url och någon html_build_query funktion. men ja kommer inte ihåg hur jag gjorde.

Och sen finns det många $_GET som finns eller inte kommer finnas med i strängen.

yakuzaemme 2013-03-31 20:24

Citat:

Ursprungligen postat av secag (Inlägg 20466353)
Jo men jag hade löst det innan med parse_url och någon html_build_query funktion. men ja kommer inte ihåg hur jag gjorde.

Och sen finns det många $_GET som finns eller inte kommer finnas med i strängen.

Men jag utgår från att du vet vilka du vill/inte vill ha med? Kör bara unset på de du inte vill ha med, så har du $_GET-arrayen med enbart värden du vill - eller?

secag 2013-03-31 20:43

Men det blir så fulkod :) Minns att ja kunde använda parse_url för det på något sätt..

secag 2013-03-31 20:46

Kan förklara mitt problem varför jag behöver detta. Nedan ser du en kod som fungerar.
PHP-kod:

<?php if($sort == "11") { echo "<strong>Billigast</strong>&nbsp;&nbsp;&nbsp;"; } else { ?> <a href='<?php echo base_url(); ?>search?o=1&b=1'>Billigast</a>&nbsp;&nbsp;&nbsp;<?php ?>
<?php 
if($sort == "10") { echo "<strong>Dyrast</strong>&nbsp;&nbsp;&nbsp;"; } else { ?> <a href='<?php echo base_url(); ?>search?o=1&b=0'>Dyraste</a>&nbsp;&nbsp;&nbsp;<?php ?>
<?php 
if($sort == "01") { echo "<strong>Äldsta</strong>&nbsp;&nbsp;&nbsp;"; } else { ?> <a href='<?php echo base_url(); ?>search?o=0&b=1'>Äldsta</a>&nbsp;&nbsp;&nbsp;<?php ?>
<?php 
if($sort == "00" || strlen($sort) == 0) { echo "<strong>Senaste</strong>&nbsp;&nbsp;&nbsp;"; } else { ?> <a href='<?php echo base_url(); ?>search?o=0&b=0'>Senaste</a>&nbsp;&nbsp;&nbsp;<?php ?>

Men istället för att skriva en statisk url: search?o=0&b=0 så vill jag också att de andra sökkriterna skall komma med. typ category=cars&location=sweden.

Man kan skriva o=0&b=0 + $_SERVER["QUERY_STRING"] men repeteras o=0&b=0 och det vill jag inte.

secag 2013-03-31 22:10

Hittade min gamla kod! Det var inget. Här är koden för dom som letar efter liknande:

parse_str($_SERVER["QUERY_STRING"], $ar);
$data["query_string"] = http_build_query(array_diff_key($ar,array("o"=>"", "b"=>"")));

Clarence 2013-04-01 12:06

Citat:

Ursprungligen postat av secag (Inlägg 20466361)
Hittade min gamla kod! Det var inget. Här är koden för dom som letar efter liknande:

parse_str($_SERVER["QUERY_STRING"], $ar);
$data["query_string"] = http_build_query(array_diff_key($ar,array("o"=>"", "b"=>"")));

$_GET är redan färdigparsad parameter-array av QUERY_STRING. Använd den istället för att göra om det som redan är gjort ...

yakuzaemme 2013-04-01 12:23

Citat:

Ursprungligen postat av secag (Inlägg 20466361)
Hittade min gamla kod! Det var inget. Här är koden för dom som letar efter liknande:

parse_str($_SERVER["QUERY_STRING"], $ar);
$data["query_string"] = http_build_query(array_diff_key($ar,array("o"=>"", "b"=>"")));

vs

Citat:

unset($_GET['o'], $_GET['b']);
http_build_query($_GET);
Vart är fulkoden?

Clarence 2013-04-01 13:07

Citat:

Ursprungligen postat av yakuzaemme (Inlägg 20466395)
vs



Vart är fulkoden?

Skulle föredra hans. Finns ingen anledning att förutsätta att hela _GET inte kommer behövas senare. Inte för att jag förespråkar att man ska använda _GET mer än en gång för att skapa ett Request-objekt (för bättre testbarhet), men när man ändå gör det så ska man absolut inte skriva över den för att skriva ut en URL ...


Alla tider är GMT +2. Klockan är nu 19:14.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson