perottol Skrevet 21. februar 2008 Skrevet 21. februar 2008 Hei, har et problem jeg ikke skjønner meg på. Jeg har et script som kjører på flere sider, og scriptet skal hente adressen til siden. Adressen jeg skal data fra er: http://snotpope.com/thenightbefore/index.p...in&edit=mp3 Jeg skal hente ut teksten "/thenightbefore". Jeg bruker rtrim på variabelen $_SERVER['PHP_SELF']. echo $_SERVER['PHP_SELF']; gir /thenightbefore/index.php Mens echo rtrim($_SERVER['PHP_SELF'], '/index.php'); gir /thenightbefor Altså e-en fjernes. Noen som har ideer om hvorfof i all verden dette skjer? Gjør akkurat det samme med denne adressen: http://snotpope.com/prostitutes/index.php?...in&edit=mp3 echo rtrim($_SERVER['PHP_SELF'], '/index.php'); gir da /prostitutes Noen som har ideer hvorfor koden min behandler disse forskjellig? Eller har andre ideer til hvordan jeg skal hente og strippe ned adressen?
loathsome Skrevet 21. februar 2008 Skrevet 21. februar 2008 Til dette formålet er vel beste løsning å bruke regulære uttrykk (regular expressions), trim-funksjonene skal ikke brukes her.
perottol Skrevet 21. februar 2008 Forfatter Skrevet 21. februar 2008 Takk for kjapt svar loathsome. Hvordan gjøres dette i praksis? Har du kanskje et eksempel? Er ikke så stødig at jeg vet hva regular expressions er for noe.
FrodeNilsen Skrevet 22. februar 2008 Skrevet 22. februar 2008 (endret) http://no.php.net/manual/en/function.rtrim.php Hvis du leser definisjonen av rtrim litt nøyere vil du se at filter-strengen du sender til funksjonen er ett tegn filter, ikke en streng som skal fjernes i slutten av den opprinnelige strengen. Du benytter feil funksjon. Du skal få akkurat det resultatet du får. Forslag til løsning Du kan benytte strrpos() http://no.php.net/manual/en/function.strrpos.php Hvis du finner siste "/", vil du i normale tilfeller ha adressen forran denne. Du kan deretter benytte substr() http://no.php.net/manual/en/function.substr.php Hent frem det som står opp til og med siste "/". Jeg har ikke benyttet disse super-globale variablene slik du gjør, så jeg har ikke satt meg inn i detaljene rundt dem. Det er fullt mulig at det er gedigne problemer med den metoden jeg har forslått, så jeg vil anbefale deg å lese deg opp på temaet her: http://no.php.net/manual/en/reserved.varia...ariables.server Endret 22. februar 2008 av FrodeNilsen
MC2 Skrevet 22. februar 2008 Skrevet 22. februar 2008 ereg_replace("^(.+)/index.php$","\\1",$_SERVER["PHP_SELF"]); ellers kan du bruke substr substr($_SERVER["PHP_SELF"],0,0-strlen("/index.php"));
loathsome Skrevet 23. februar 2008 Skrevet 23. februar 2008 Hvorfor "ereg_replace ()"? "preg_replace ()" er mye raskere og mer framtidsrettet.
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå