Gilbert Skrevet 12. juni 2004 Del Skrevet 12. juni 2004 Trodde jeg kunne finne fil-etternavnet ved å bruke denne metoden $fil = $HTTP_POST_FILES['vedlegg']['tmp_name']; strstr($fil, "."); men så feil kunne jeg ta - hvordan gjøres det egentlig? Lenke til kommentar
jrz Skrevet 12. juni 2004 Del Skrevet 12. juni 2004 (endret) glem alt jeg sa.. følgende gav meg output: .jpg $file = "image.jpg"; $out = strstr($file, '.'); echo $out; Endret 12. juni 2004 av zyrtech_ Lenke til kommentar
Gilbert Skrevet 12. juni 2004 Forfatter Del Skrevet 12. juni 2004 hvis jeg setter $file til $HTTP_POST_FILES['vedlegg']['tmp_name']; så får jeg ut .tmp om ikke jeg tar feil... ? Lenke til kommentar
Blodhemn Skrevet 13. juni 2004 Del Skrevet 13. juni 2004 $_FILES['felt']['tmp_name'] gir deg uheldigvis ikke en filending å leke med.. Den vil outputte noe som f.eks /tmp/phprhwfwm om du bruker zyrtechs eksempel på $_FILES['felt']['name'] så burde det gi deg filendingen du vil ha, gitt at det ikke er noen ufyselige punktum i filnavnet ellers. Jeg ser ikke noe umiddelbart galt med å bruke name i stedet for tmp_name.. med mindre man forventer at filendingen forandrer seg på ferden fra klient til tjener Lenke til kommentar
kroekkete Skrevet 13. juni 2004 Del Skrevet 13. juni 2004 (endret) Hvorfor bruker du ikke denne? $_FILES['felt']['type'] Mvh Primaxx EDIT: Hmm, burde kanskje lest overskriften litt nøyere... Unnskyldningen min får være at jeg surfer med en lusen mobilskjerm akkurat nå... Endret 13. juni 2004 av primaxx Lenke til kommentar
Torbjørn Skrevet 14. juni 2004 Del Skrevet 14. juni 2004 for å finne file extension til en fil: $file_ext = array_pop(explode('.', $filename)); Lenke til kommentar
???????? Skrevet 14. juni 2004 Del Skrevet 14. juni 2004 array_pop kutter også ut den delen av arrayen - bruk heller end() - begge fungerer da array_pop også returnerer den siste delen den kutter av, men det er ekstra jobb for scriptet og hvis andre skal lese koden din kan det virke som det er en grunn for at du kutter den av. Lenke til kommentar
Torbjørn Skrevet 15. juni 2004 Del Skrevet 15. juni 2004 hm.. hvis du bemerker det, synes jeg det bør bemerkes at arrayet som det fjernes fra er et som ikke tas vare på likevel. array_pop eksemplet over er copy-paste fra user comments på php.net og ang. mere jobb - man kommer ikke utenom en algoritme som søker gjennom alle punktum og henter ut det som står etter det siste. Det er dette array_pop gjør, muligens mere optimalisert siden det er ferdig kompilert til sammenligning med et program man skriver selv. uten at jeg har sjekket php source for dette. kjør gjerne en benchmark Lenke til kommentar
Torbjørn Skrevet 15. juni 2004 Del Skrevet 15. juni 2004 Jeg kjørte Benchmark: torbjorn@intern(~/php)$ time php strstr.php 1.06user 0.00system 0:01.19elapsed 88%CPU (0avgtext+0avgdata 0maxresident)k 0inputs+0outputs (0major+1009minor)pagefaults 0swaps torbjorn@intern(~/php)$ time php arraypop.php 0.78user 0.00system 0:01.05elapsed 75%CPU (0avgtext+0avgdata 0maxresident)k 0inputs+0outputs (0major+1005minor)pagefaults 0swaps program strstr.php: <?php $filename="filnavn.txt"; for($i=0;$i<100000;$i++){ $e=strstr($filename,'.'); if(!$e){ $e='filename.txt'; } else if($e{0} == '.'){ $e=substr($e,1); } } ?> arraypop.php: <?php $filename="filnavn.txt"; for($i=0;$i<100000;$i++){ $e=array_pop(explode('.', $filename)); } ?> arraypop kjappere her, men det er kun fordi det måtte legges til kodelinjer til strstr som tar høyde for at $e kan bli tom eller inneholde punktum. Lenke til kommentar
???????? Skrevet 15. juni 2004 Del Skrevet 15. juni 2004 Kjører du en benchmark på end() også? Jeg fikk i alle fall bedre resultater med end(). Skjønner ikke helt hva du sikter til Torbjørn, array_pop er en funksjon som tar bort det siste leddet fra en array og returnerer dette - end() er en funksjon som henter siste delen av arrayen uten å røre den. Dersom fjartan noen gang skulle jobbe som en del av et større team, eller lage et script for noen som ville bygge videre på det senere er det ikke særlig populært å bruke funksjoner som gjør sammen nytten, men egentlig er ment for noe annet. Mener du virkelig at man heller burde bruke array_pop() enn end()? I så fall vil jeg gjerne høre argumenter for dette, sier ikke at det er feil i alle sammenhenger - vil bare høre hvis du har et eksempel på hvor det er bedre? Lenke til kommentar
Torbjørn Skrevet 15. juni 2004 Del Skrevet 15. juni 2004 nei, skal jeg være ærlig kjente jeg ikke til end(), og snappet heller ikke opp at du foreslo det, så jeg legger meg paddeflat angående det andre du skriver, da dette er en array som "fanges opp i løse lufta", ville jeg som programmerer ikke si noe på at man "hakker den opp" eller gjør noe annet med den som kan ødelegge den. Jeg er imidlertid farget av min perlbakgrunn der pop, push, shift og unshift er mye oftere brukt og mye vanligere enn i php, da array-håndtering er mye mer integrert i perlsyntax, uten at det slår ben under det jeg sier først i dette avsnittet. Lenke til kommentar
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å