Avatar billede kalaharikid Nybegynder
27. oktober 2007 - 10:44 Der er 15 kommentarer og
1 løsning

ltrim fra URL giver fejl

Er lidt grøn i php men har et billede der skal gemmes i en db, og billede + navn bliver overført via querystring i URL :

Eksempel :img_id=brugerbilleder/db1a7c5f326b63a78a562f12c9b565f7.gif

Nu vil jeg gerne fjerne mappenavnet brugerbilleder/ og prøver at bruge en ltrim  :

<?
$id = $_GET['img_id'];
$decid = urldecode($id);
$clean=ltrim($decid, "brugerbilleder/");
echo  $clean;
?>">

Problemet er at jeg får fjernet noget af filnavnet også så $clean
f.eks bliver til : 1a7c5f326b63a78a562f12c9b565f7.gif

Jeg regner med at det er URL encoding af tegnet / der driller og prøver at decode først. Men lige meget hjælper det.. hvad gør jeg forkert?
Avatar billede erikjacobsen Ekspert
27. oktober 2007 - 10:48 #1
Du kan ikke bruge ltrim på den måde. Anden parameter er en mængde af tegn, der skal fjernes, ikke en fast streng. Skal du altid have det der står efter den sidste skråstreg? Prøv med http://php.net/explode
Avatar billede kalaharikid Nybegynder
27. oktober 2007 - 11:00 #2
Tak Erik, ja til det med efter den sidste skråstreg : kunne du give et eksempel med explode?
Avatar billede erikjacobsen Ekspert
27. oktober 2007 - 11:01 #3
Er der altid 1 skråstreg?
Avatar billede erikjacobsen Ekspert
27. oktober 2007 - 11:02 #4
Hvis der altid er een, er det en smule nemmere:

$id = $_GET['img_id'];
$a = explode("/",$id);
$clean=$a[1];
Avatar billede erikjacobsen Ekspert
27. oktober 2007 - 11:04 #5
Og ellers, hvis det er den sidste, med 0-mange skråstreger, så fx:

$id = $_GET['img_id'];
$a = explode("/",$id);
$clean=end($a);
Avatar billede nielle Nybegynder
27. oktober 2007 - 11:08 #6
Eller, hvis man på forhånd ved at der står

brugerbilleder/

foran det man leder efter:

$id = $_GET['img_id'];
$decid = urldecode($id);
$clean = str_replace("brugerbilleder/", "", $decid);
echo $clean;
Avatar billede kalaharikid Nybegynder
27. oktober 2007 - 11:12 #7
Der er kun en skråstreg, og det virker perfekt. Tusind tak for hjælpen, Erik. Smid et svar så er der point ;-)
Avatar billede kalaharikid Nybegynder
27. oktober 2007 - 11:13 #8
Og tak for de mange gode bud!
Avatar billede erikjacobsen Ekspert
27. oktober 2007 - 11:15 #9
Jeg samler slet ikke på point, tak.
Avatar billede erikjacobsen Ekspert
27. oktober 2007 - 11:16 #10
Hvorfor iøvrigt laver du en urlencode?
Avatar billede erikjacobsen Ekspert
27. oktober 2007 - 11:16 #11
Ups: hvorfor en urldecode ?
Avatar billede kalaharikid Nybegynder
27. oktober 2007 - 11:19 #12
Den har jeg også fjernet efter du forklarede mig hvorfor jeg var galt afmarcheret med ltrim. Lavede den fordi jeg troede det var antallet af karakterer der blev målt forkert.
Avatar billede erikjacobsen Ekspert
27. oktober 2007 - 11:20 #13
Ah, ok. $_GET laver altid selv een omgang urldecode, og man skal ud i en hel del spidsfindigheder, hvis man selv skal være nødt til at gøre det yderligere een gang. ;)
Avatar billede kalaharikid Nybegynder
27. oktober 2007 - 11:35 #14
Man, der er lige en del man skal vide om den slags ... Tak for tipsene. Må sige at jeg føler mig en DEL klogere nu på det med at trimme, replace, explode...
Avatar billede showsource Seniormester
28. oktober 2007 - 11:02 #15
Du kan jo nøjes med basename()

$clean = basename($_GET["img_id"]);
echo $clean;
Avatar billede kalaharikid Nybegynder
27. maj 2014 - 23:16 #16
Lukker...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester