Avatar billede bob_dylan Nybegynder
24. marts 2006 - 08:06 Der er 18 kommentarer og
1 løsning

Hvordan finder man filendelsen?

Hej. Jeg vil gerne finde en fils endelse.

Er det ikke noget med:

$newFilename = explode(".",$filename);

Og så ellers tage den bag fra om jeg så må sige? Hvordan finder man indholdet efter det bageste punktum?

$newFilename[-0] ??

Er der en smartere måde at finde filendelsen?
Avatar billede jakobdo Ekspert
24. marts 2006 - 08:17 #1
$endelse = strtolower(end(explode(".",$filename)));
Avatar billede saucer Nybegynder
24. marts 2006 - 08:17 #2
Du kan bruge : substr("filnavn.jpg", -3); vil udskrive jpg.

Hvis du så ikke ved i hvilken string din endelse er så kunne du lave noge fusk som det her :

$fil = "filnavn.jpg";

$filnavn = strrev($fil); // Spejlvender indholdet til  gpj.nvanlig
$type = substr($filnavn, 0, 3);  tager første 3 tegn -  "gpj"
$type = strrev($type); spejlvender igen så der står hpg.

Det er lidt fusk men det viser bare på at man kan løse et på 1000 måder i php.

Ps. Hvis du ikke kender til www.php.net så synes jeg at du skal smutte en tru forbi.
Avatar billede saucer Nybegynder
24. marts 2006 - 08:18 #3
jakobdo >> Sorry da jeg startede med at skrive var dit indlæg ikke her..
Avatar billede jakobdo Ekspert
24. marts 2006 - 08:19 #4
Saucer: Det går nok! :o)
Avatar billede saucer Nybegynder
24. marts 2006 - 08:23 #5
For at komme med flere forslag så kan denne også bruges :

$filnavn = "filnavn.jpg";
print strrchr($filnavn, '.');  //vil udskrive .jpg
Avatar billede saucer Nybegynder
24. marts 2006 - 08:24 #6
Så rent faktisk er der ingen grund til exploade for at klippe den efter punktumet.
Avatar billede bob_dylan Nybegynder
24. marts 2006 - 08:31 #7
Er jakobs ikke den mest korrekte/korte, hvis der nu eksisterer flere punktummer i filen?
Avatar billede jakobdo Ekspert
24. marts 2006 - 08:36 #8
Min løsning vil give: jpg
saucer's:
$filnavn = "filnavn.jpg";
print strrchr($filnavn, '.');  //vil udskrive .jpg
giver som han skriver: .jpg

Så det er jo smag og behag, og igen bevis på et problem kan løses på flere måder.

Uden at fremhæve min egen løsning, så vil jeg mene den er den bedste! :o)
Du kan jo evt fjerne strtolower() da den kun er tilføjet, for at jpg, Jpg, JPG og lign ikke opfattes som forskellige typer.

Jeg bruger det ofte til at tjekke om mod et allowType array.

$allowTypes = array("jpg","gif","bmp",png");

og så:
if(in_array($endelse,$allowType))
//Vi har en godkendt filtype.
Avatar billede saucer Nybegynder
24. marts 2006 - 08:45 #9
strrchr($filnavn, '.'); denne tager den sidste punktum. så filnavn.asp.jpg vil give .jpg
men hvis du ikke skal bruge . så kan du fint bruger : substr("filnavn.jpg", -3);
Avatar billede jakobdo Ekspert
24. marts 2006 - 09:08 #10
saucer, din sidste løsning vil så fejle på: filnavn.jpeg
Avatar billede showsource Seniormester
24. marts 2006 - 09:42 #11
man kan også bruge pathinfo()

$navn = "fil.jpg";
$path_dele = pathinfo($navn);
echo $path_dele["extension"];
Avatar billede saucer Nybegynder
24. marts 2006 - 11:00 #12
jakobdo >> Tænkte ikke lige over det...
Avatar billede jakobdo Ekspert
24. marts 2006 - 11:07 #13
Det var også derfor jeg fortalte dig det! :o)
Avatar billede saucer Nybegynder
24. marts 2006 - 12:31 #14
jakobdo >> Jep og på den måde holder vi exp konceptet i live :) heehh
Avatar billede jakobdo Ekspert
24. marts 2006 - 12:52 #15
Saucer: Det er nemlig hvad vi gør, og ikke mindst holder denne tråd i live...
Bob_Dylan: Har du fundet noget du kan bruge?
Avatar billede bob_dylan Nybegynder
24. marts 2006 - 14:50 #16
Jeg har brugt jakobs svar fordi det, efter min vurdering, ikke kan fejle selvom der er lumske punktummer mv i navnet, er simplest og mest effektivt!

Mange tak for jeres hjælp. Hvis jakob ikke poster svar, går pointene til saucer.
Avatar billede jakobdo Ekspert
24. marts 2006 - 15:02 #17
Et svar!
Dog er showsource's løsning heller ikke helt dum. :o)
Avatar billede bob_dylan Nybegynder
24. marts 2006 - 15:33 #18
Mange tak!
Avatar billede jakobdo Ekspert
24. marts 2006 - 15:36 #19
Takker for point!
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