[php]Ta bort filändelse ur output

Permalänk

[php]Ta bort filändelse ur output

Hej,
Jag har en hemsida där jag har ett phpscript som ser ut såhär:

<?php function dirList ($directory) { // Skapa en array för att hålla fillistan $results = array(); // Skapa ett handtag för mappen $handler = opendir($directory); // Gå igenom mappen tills alla filer har blivit inlästa while ($file = readdir($handler)) { // Plocka bort denna mappen samt undermappen och Thumns.dbb if ($file != '.' && $file != '..' && $file !='Thumbs.db') $results[] = $file; } // Stäng handtaget closedir($handler); // Klart! return $results; }

Jag använder sedan funktionen sähär:

<?php $thisDir = dirList("datorrelaterat/www/"); for($i=0; $i < count($thisDir); $i++) { echo "<a href=\"./datorrelaterat/www/$thisDir[$i]\">$thisDir[$i]</a><br />"; } ?>

Och om mappen "www" då innehåller ex randomthing1.php och randomthing2.php, så vill jag ju länka till filen men bara visa "randomthing1" och "randomthing2" på sidan. Hur löser jag det?
Tack på förhand!

Sidan jag använder scriptet på: http://tomtenalle.kicks-ass.net

Visa signatur

6600K@4,5GHz 1,25V | EVGA 980Ti | Samsung 950 Pro m.2

Permalänk
Medlem

$filnamn = 'tyskland.png'; echo substr($filnamn, 0, strrpos($filnamn, '.')); // Skriver ut "tyskland"

Permalänk
Medlem

$fil = $thisDir[$i]; $filnamn = substr($fil, 0, strpos($fil, '.'));

edit: beaten to the punch.. men jag tror min är lite vassare ändå

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem
Skrivet av Teknocide:

$fil = $thisDir[$i]; $filnamn = substr($fil, 0, strpos($fil, '.'));

edit: beaten to the punch.. men jag tror min är lite vassare ändå

Au contraire… tänk dig en fil med namnet "program-1.0.zip"… vilket filformat har denna? Din kommer att klassa ".0.zip" som filformatet, min strippar endast ".zip"… å andra sidan klarar min inte av dubbeländelser som t.ex. ".tar.gz", men ska man få med allt så blir det plötsligt ganska avancerat.

Permalänk
Medlem
Skrivet av You:

Au contraire… tänk dig en fil med namnet "program-1.0.zip"… vilket filformat har denna? Din kommer att klassa ".0.zip" som filformatet, min strippar endast ".zip"… å andra sidan klarar min inte av dubbeländelser som t.ex. ".tar.gz", men ska man få med allt så blir det plötsligt ganska avancerat.

Dubbeländelser var det jag tänkte på. Det verkar som att man får ta till gamla hederliga regex igen

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem

Rekommenderar PHP: pathinfo - Manual till detta.

Permalänk
Medlem
Skrivet av Teknocide:

Dubbeländelser var det jag tänkte på. Det verkar som att man får ta till gamla hederliga regex igen

Man kan också göra vissa antaganden och få fram följande:

$filnamn = 'program-1.0.tar.gz'; $andelser = Array('gz','bz2','b64','Z','lz','xz'); while(in_array(substr($filnamn, strrpos($filnamn, '.')+1), $andelser)){ $filnamn = substr($filnamn, 0, strrpos($filnamn, '.')); } echo $filnamn; // Bör skriva ut "program-1.0"

…men ett regex är snyggare.

Permalänk
Medlem

glöm inte .inc.php och (boobs).jpg.exe!

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Skrivet av Teknocide:

$fil = $thisDir[$i]; $filnamn = substr($fil, 0, strpos($fil, '.'));

edit: beaten to the punch.. men jag tror min är lite vassare ändå

Tack för en mycket smidig lösning!

Visa signatur

6600K@4,5GHz 1,25V | EVGA 980Ti | Samsung 950 Pro m.2