PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [PHP] Dateinamen in ein Array schaufeln



Maisaffe
13.07.2005, 16:14
Kann mir jemand mal ein Beispielscript erstellen, welches die Dateinamen aus dem ordner /ordner in ein Array speichert? $array[1], $array[2] usw.

Und dann ein Code der die Anzahl der Array INhalte angibt, z.B. $array[1], $array[2] $array[3], $array[4] => Script merkt das in $array[] 4 inhalte hinterlegt sind und diese von mir aus als echo ausgibt. ;)

Dennis

Dingsi
13.07.2005, 16:29
So einen Code hat man dir jetzt schon drei mal gegeben, aber was solls..
<?php
$files = array();
$dir = opendir("ordner");
while($file = readdir($dir))
{
if($file != "." && $file != "..") $files[] = $file;
}
$filecount = count($files);
?>Und es ist $files[0]-[3] bei 4 Einträgen und nicht [1]-[4]. Man fängt bei 0 an.

Maisaffe
14.07.2005, 08:55
So einen Code hat man dir jetzt schon drei mal gegeben, aber was solls..
<?php
$files = array();
$dir = opendir("ordner");
while($file = readdir($dir))
{
if($file != "." && $file != "..") $files[] = $file;
}
$filecount = count($files);
?>Und es ist $files[0]-[3] bei 4 Einträgen und nicht [1]-[4]. Man fängt bei 0 an.
jo, stimmt, arrays fangen it 0 an.
Jetzt hab ich was wichtiges vergessen: ich möchte nur dateien in arrays haben mit der endung: .dateiendung ^^°
Das war mein Hauptproblem.

Dennis

Tomarus
14.07.2005, 09:32
<?php
$files = array();
$dir = opendir("ordner");
while($file = readdir($dir))
{
if($file != "." && $file != ".." && eregi ('.dateiendung$', $file)) $files[] = $file;
}
$filecount = count($files);
?>
Oder willst du jetzt für jeden Dateityp einen eigenen Array?

Maisaffe
14.07.2005, 09:57
<?php
$files = array();
$dir = opendir("ordner");
while($file = readdir($dir))
{
if($file != "." && $file != ".." && eregi ('.dateiendung$', $file)) $files[] = $file;
}
$filecount = count($files);
?>
Oder willst du jetzt für jeden Dateityp einen eigenen Array?
Nein, soll nur die Dateien mit .dateiendung einlesen in die Arrays. Ich werde den Code mal heute Mittag ausprobieren, muss nämlich jetzt in Mathe/Englishc Vorbereitung fürs Gymasium. >__>

Dennis

Maisaffe
14.08.2005, 20:21
Hab das Skript ein bisschen verändert:

<?php /* THREAD: http://www.multimediaxis.de/showthread.php?t=57635 */
$language_files = array();
$language_dir = opendir("languages");
while($file = readdir($language_dir))
{
if($file != "." && $file != ".." && eregi ('.language$', $file)) $language_files[] = $file;
}
$filecount = count($language_files);
$durchlauf = 1;
while ($durchlauf <= $filecount)
{
echo ''.$language_files[''.$durchlauf.''].'<br>';
$durchlauf++;
}
?>
Zerlegt heißt

if($file != "." && $file != ".." && eregi ('.language$', $file)) $language_files[] = $file;soviel wie:
wenn ($file nicht "." und ".." (unsichtbar/ Ordner zurück) ist und findet(sucht .language in $fileordner) werden die dateien in $language_files[] (Array) reingeschaufelt.
Soweit so gut.

Warum ist hinter eregi('.language ein "$"?
Warum wird nach dem if($file != "." && $file != ".." && eregi ('.language$', $file)) kein {inhalt} gesetzt?

Dennis

Manni
15.08.2005, 10:01
1. Das Dollarzeichen($) steht für das Ende des Strings. Das heisst, das sich ".language" am Ende des Strings befinden muss. Wenn es nicht wäre, würde die RegExp auch auf "xy.languages" oder "a.language.txt" zutreffen.
2. Nach eine if-Abfrage oder einer anderen Kontrollstruktur(for, while usw.) steh entweder genau ein Befehl oder aber ein Block, der durch geschweifte Klammer gekennzeichnet und im Prinzip genau wie ein Befehl behandelt wird.

Maisaffe
15.08.2005, 11:02
Danke für die Erklärung Manni.

Möchte jetzt die Dateiendung .languages abschneiden.
Substr (http://self.inspire-net.de/selfphp/funktionsreferenz/string_funktionen/substr.html#beispiel) scheint es nicht ganz zu bringen (oder ich hab mich verlesen, kann auch sein).
Das Skript soll nicht ab dem Punkt (.) abschneiden, sondern nur den Bereich (.languages) oder auch nur die letzten 10 Zeichen (letzten 10 Zeichen sind automatisch: .languages).

Dennis

Manni
15.08.2005, 12:02
Sollte gehen, ist aber nicht getestet:

$language_files[] = substr($file, -10);
Siehe auch: substr() (http://www.selfphp.info/funktionsreferenz/string_funktionen/substr.php)

Maisaffe
15.08.2005, 12:28
Sollte gehen, ist aber nicht getestet:

$language_files[] = substr($file, -10);
Siehe auch: substr() (http://www.selfphp.info/funktionsreferenz/string_funktionen/substr.php)
Ich kenn den Link. ;)
Aber das steht ja:
Beispiel 4: substr("1234567", -2)
Es wird alles vom "Ende-2" bis zum tatsächlichen Ende des Strings
zurückgegeben - also 67.

Dennis
PS: Werds dann halt trotzdem mal ausprobieren.

dead_orc
15.08.2005, 12:41
$language_files[] = substr($file, 0, -10);
So sollte es richtig sein...

PS: BTW, ein besserer Link ist wahrscheinlich dieser (http://de.php.net/substr)...