[Prob]Downloadscript und die Dateinamen

Hallihallo,
ich habe auf meiner Seite ein Downloadscript eingebunden, das alle Dateien aus einem Ordner ausliest und diese dann mit dem Dateinamen ausgibt. Nun heißen diese Dateien z.B. "datei_name.zip". Ich möchte jedoch, dass sie "Datei Name" heißen. Ich dachte mir das geht, wenn ich es einfach mit replace mache ("_" wird durch " " ersetzt und das ".zip" auch durch " "). Aber ich weiß nun leider nicht genau, wie ich das hinbekommen soll. Es soll auf jeden Fall mehrere Dateiendungen durch " " ersetzen (.rar, .zip, .jar, ...)

Hier mal der Quellcode des Download-Scripts:

PHP:
<?php

$folder1="blabla1";
$folder2="blabla2";

echo '<center><table width="90%" border="0" cellspacing="0" cellpadding="0"><tr><td><font face="Verdana" style="font-size: 8pt" color="#6C6C6C">';
echo ("<b> ".$folder1."</b><br><br>");
$open=opendir ($folder1);
while ($file = readdir ($open)) {
if($file != "." && $file != "..")
echo '<a href="'.$folder1.'/'.$file.'">'.$file.'</a><br>'; }
closedir($open);
echo '</td>';

echo '<center><td><font face="Verdana" style="font-size: 8pt" color="#6C6C6C">';
echo ("<b> ".$folder2."</b><br><br>");
$open=opendir ($folder2);
while ($file = readdir ($open)) {
if($file != "." && $file != "..")
echo '<a href="'.$folder2.'/'.$file.'">'.$file.'</a><br>'; }
closedir($open);
echo '</td></tr></table></center>';?>

Ich hoffe mir kann jemand helfen

Vielen Dank schon mal

Tschau David
 
Hi @David,

mit
PHP:
str_replace("was soll ersetzt werden", "durch was", string)
kannst Du das Vorkommen des angegebenen Suchstring ("was soll ersetzt werden") durch den Ersetzungsstring ("durch was") ersetzen.

Die Dateiendungen (.zip, .rar ...) würde ich vom String abschneiden.

Hier ein Beispiel:
PHP:
function name($name) {
        $length = strlen($name); // ermittelt die laenge des string
        $pos  = strrpos($name, "."); // ermittelt die position vom letzten vorkommen eines >.<
     
        // ersetze >_< durch leerzeichen und kuerze string
        // Bsp. Laenge   = 15
        //	  Position = 11
        //	  Position - Laenge = -4
        // substr($name, 0, -4) am Ende werden 4 Zeichen abgeschnitten
        return str_replace("_", " ", substr($name, 0, $pos - $lenght));
     }

Füge die Funktion in Deinem Skript oben ein. Rufe dann einfach an einer belibigen Stelle Deines Skriptes die Funktion mit
PHP:
name($file)
auf.

In Deinem Skript würde das so aussehen:
PHP:
echo '<a href="'.$folder1.'/'.$file.'">'.name($file).'</a><br>';

Hoffe ich hab mich nicht vertippt... :-)

jenser
 
Hallo ;)

Hat alles super geklappt.
Was ich aber auch noch haben wollte ist, dass das "_" durch ein einfaches Leerzeichen (" ") ersetzt wird. Das funktioniert aber leider noch nicht.
Was auch noch sehr nützlich wäre, wenn es den Anfangsbuchstaben immer groß schreibt (z.B. wenn die Datei "musik_1.txt" heißt, soll sie als "Musik 1" ausgegeben werden ;) )

Wäre das auch möglich? Oder geht es nicht?

Danke für deine Hilfe

Tschau David
 
hi,

hab das Script aus der Kalten geschrieben. Zum ersetzen von dem >_< sollte das eigentlich
PHP:
str_replace("_", " ", substr($name, 0, $pos - $lenght));
tun. Wenn der Link mit einem underline dargestellt wird, wirst Du es auch nicht sehen.
Schau mal im Quelltext nach ob der Unterstrich noch da ist.

Für die Großschreibung kannst du folgende Funktion nutzen:
PHP:
ucfirst(string)

Versuch es mal so...
PHP:
function name($name) {
	$name = ucfirst($name);
	$length = strlen($name); // ermittelt die laenge des string
	$pos  = strrpos($name, "."); // ermittelt die position vom letzten vorkommen eines >.<

	// ersetze >_< durch leerzeichen und kuerze string
	// Bsp. Laenge   = 15
	//      Position = 11
	//      Position - Laenge = -4
	// substr($name, 0, -4) am Ende werden 4 Zeichen abgeschnitten
	return str_replace("_", " ", substr($name, 0, $pos - $lenght));
}

hab es aber nicht getestet.

jenser
 
Zurück