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 ...

yakuzaemme 2013-04-01 13:56

Citat:

Ursprungligen postat av Clarence (Inlägg 20466400)
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 ...

Jo visst är det så, beror självklart på hur det hela är uppbyggt och om han kommer behöva GET-arrayen vid senare skede :)


Alla tider är GMT +2. Klockan är nu 15:29.

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