21. maj 2005 - 13:21
Der er
27 kommentarer og 1 løsning
Hiv page=X ud af URL uden $_GET.
Er det muligt, på en ordentlig måde, at have en function som virker nogenlunde som i nedenstående eksempel: $str = "velkommmen.php?page=hej"; echo showPage($str); (resulterer i hej).
Annonceindlæg fra Deloitte
hvorfor ikke bruge $_GET[] når det er hvad den er lavet til?
For mine inputs til funktionen findes ikke i adresse-feltet i browseren. Skal køre den på flere forskellige adresser på min side.
$str = "velkommmen.php?page=hej"; $EnMatch = preg_match("/page=(.*)/", $str, $matches); if ($EnMatch) echo "Page= " . $matches['1']; else echo "Ingen match.":
<ole> Du kan poste en form mod siden - eller bruge en cookie - eller session. Det kommer anpå til hvad og hvordan det skal bruges /mvh </bole>
Det regulære udtryk - "/page=(.*)/ - skal forfines noget mere hvis der f.eks. kan stå noget mere efter "page=hej".
nielle >> Det kan der ikke ... der kan ikke engang stå "page=hej": "For mine inputs til funktionen findes ikke i adresse-feltet i browseren." :)
Jeg har en menu med en masse menuer, som bliver genereret fra en array. Dette array løbes igennem, og så skal jeg sammenligne om $_GET['page'] passer sammen med page=... fra f.eks. velkommen.php?page=hej, dintur.php?page=side1 osv...
Den adresse jeg sammenligner med kan godt indeholde flere variable. Derfor jeg ikke bare kan sammenligne med $_SERVER['PHP_SELF']
Nu er forvirringen vist ved at være total ...! Står der alligevel noget i adressefeltet? :)
Jeg har en masse adresser på min side, som jeg vil sammenligne om indeholder samme value i værdien page=...
Ahhhhh .... nu tror jeg, jeg forstår ;o) eikhorsholm >> Du har formodentlig kun én variabel, der hedder 'page' i hvert link. Så kan du godt sammenligne med PHP-SELF
Jeg kan nemt hive page ud fra adressefeltet med $_GET['page'], men hvorledes hiver jeg dem ud fra adresserne på min side?
Det gør du med den RegExp, nielle viste dig :)
olebole --> Hvad nu hvis jeg sammenligner: velkommen.php?page=hej&id=4 == side2.php?page=hej den vil vel resultere i falsk, men den skal bruge sand?
Eller for ikke at kunne bruge RegExp: page.php?page=hej == velkommen.php?page=hej&id=7
21/05-2005 13:43:42 ;o) Det kommer anpå, hvad der kan stå
<?php function showPage($url) { if (preg_match("/page=(.+?)(&.+)?$/", $url, $matches)) return $matches['1']; else return "": } ?>
nielle --> den er da ikke særlig generel?
Den fungere da med de eksempler du har givet os ind til nu. Så må du vise nogen af dem hvor den ikke fungerer.
eikhorsholm >> Man kan ikke skrive en brugbar - og slet ikke en 'generel' eller 'generisk' - RegExp, uden at vide, hvad der kan stå. Ellers er det umuligt at opstille mønstret, der skal bruges. Det var derfor, jeg skrev: "Det kommer anpå, hvad der kan stå". Hvis du vil have en bedre, må du selv oplyse om de forskellige muligheder, der kan opstå :)
Hmm. Ok. Håbede der var en slags funktion for at imitere $_GET på en eller anden måde. Kan godt se, jeg lige må tænke mit problem lidt mere igennem :-) Tror jeg lukker spørgsmålet. Håber det er i orden jeg selv snupper pointene, ellers må I lige sige til? Ellers tak for alle svar!
Nå?! Hvad er det egentlig du mener der var i vejen med min løsning siden at du ikke kan bruge den?
nielle -> din løsning baserede sig på at man viste hvor page=... befandt sig i stien. Jeg ønskede en generel løsning.
Nu gik dit spørgsmål rent faktisk på "page", så det er det vi har arbejdet ud fra. Du har stadig ikke givet også nogle eksempler på hvad du mener med at den skal være "generel". Hvad er det som den også skal kunne gøre??
02. juni 2005 - 20:57
#25
Kan du komme med en funktion som i begge nedenstående felter vil returnere "HEJ"? velkommen.php?page=HEJ&id=4 page.php?page=HEJ&id=4
02. juni 2005 - 21:00
#26
Ved du hvad nielle! Jeg ved ikke rigtig hvordan jeg skal sige det, men du har faktisk 100% ret! Jeg har vist sagt lidt for meget tidligere ,UNDSKYLD. Dit forslag virker! Jeg laver lige et spørgsmål så du kan få pointene. Det er altså rigtig pinligt, sorry!
02. juni 2005 - 21:44
#28
Fair nok - jeg bærer skam ikke nag :^)
Vi tilbyder markedets bedste kurser inden for webudvikling