Hallo erstmal!
hab hier mal ein kleines Script welche einen Inhalt in einem Ordner aufliestet.
mit Dateinamen und der jeweiligen grösse dieser Datei.(funktioniert auch)
Das script:
Das Problem ist jetzt aber, dass bei "$file[name]" halt Dateiname + Dateiendung angezeigt wird!
ok man könnte ganz einfach explode() benutzen, nur was macht man wen sich im ordner mal ne Datei mit einem punkt befindet? z.B. hallo.world.txt
(Dateiname = hallo.world Dateiendung= txt) wie könnte man das am besten lösen? kann man irgendwie sagen er soll den explode erst ab den letzten 4 Zeichen machen? ^o) was hättet ihr für Vorschläge? bin für alles offen =D
am besten wäre doch schon eine funktion ich habs mal mit:
wobei:
1.Das nicht funktioniert, er "pusht" in den array einfach nur "Array" (behauptet var_dump())
2. Das behebt das Problem nicht das der Dateiname einen . beinhalten könnte.
ich hoffe ich habe mein Problem gut geschildert und mir kann hier geholfen werde, bin froh um jeden/jede Tipp/Hilfe.
hab hier mal ein kleines Script welche einen Inhalt in einem Ordner aufliestet.
mit Dateinamen und der jeweiligen grösse dieser Datei.(funktioniert auch)
Das script:
PHP-Code:
<?
function getFiles($path)
{
$files = array();
$fileNames = array();
$i = 0;
if (is_dir($path))
{
print "Folgende Dateien befinden sich im Ordner: [b]$path[/b]
";
if ($dh = opendir($path))
{
while (($file = readdir($dh)) !== false)
{
if ($file == "." || $file == "..")
continue;
$fullpath = $path . "/" . $file;
$fkey = strtolower($file);
while (array_key_exists($fkey,$fileNames))
$fkey .= " ";
$a = stat($fullpath);
$files[$fkey]['size'] = $a['size'];
if ($a['size'] == 0)
$files[$fkey]['sizetext'] = "-";
else if ($a['size'] > 1024)
$files[$fkey]['sizetext'] = (ceil($a['size']/1024*100)/100) . " Kbyte";
else if ($a['size'] > 1024*1024)
$files[$fkey]['sizetext'] = (ceil($a['size']/(1024*1024)*100)/100) . " Mbyte";
else
$files[$fkey]['sizetext'] = $a['size'] . " bytes";
$files[$fkey]['name'] = $file;
$files[$fkey]['type'] = filetype($fullpath);
$fileNames[$i++] = $fkey;
}
foreach ($files as $file){
print "<table border=1>";
print "<tr>";
print "<td width=180>";
print "<a href=$path/$file[name]>$file[name]</a>";
print "<td width=80>";
print "$file[sizetext]
\n";
print "</tr>";
print "</table>";
}
closedir($dh);
}
else
die ("Cannot open directory: $path");
}
else
die ("Path is not a directory: $path");
sort($fileNames,SORT_STRING);
$sortedFiles = array();
$i = 0;
foreach($fileNames as $f)
$sortedFiles[$i++] = $files[$f];
return $sortedFiles;
}
$files = getFiles("upload");
?>
ok man könnte ganz einfach explode() benutzen, nur was macht man wen sich im ordner mal ne Datei mit einem punkt befindet? z.B. hallo.world.txt
(Dateiname = hallo.world Dateiendung= txt) wie könnte man das am besten lösen? kann man irgendwie sagen er soll den explode erst ab den letzten 4 Zeichen machen? ^o) was hättet ihr für Vorschläge? bin für alles offen =D
am besten wäre doch schon eine funktion ich habs mal mit:
PHP-Code:
<?php
function dateiname($file){
list($filename,$fileext) = explode(".",$file);
array_push ($file, $filename);
array_push ($file, $fileext);
}
?>
1.Das nicht funktioniert, er "pusht" in den array einfach nur "Array" (behauptet var_dump())
2. Das behebt das Problem nicht das der Dateiname einen . beinhalten könnte.
ich hoffe ich habe mein Problem gut geschildert und mir kann hier geholfen werde, bin froh um jeden/jede Tipp/Hilfe.
Kommentar