Dieter Raber: Dateien in einem Verzeichnis finden ?

Beitrag lesen

Hallo Klaus,

also fangen wir mal an mit dem readdir-Beispiel aus dem Manual

if ($handle = opendir('/path/to/files')) {

/* This is the correct way to loop over the directory. */
   while (false !== ($file = readdir($handle))) {
       echo "$file\n";
   }
   closedir($handle);
}

das haette ausgegeben:

Auto_112_4234.jpg
Auto_122_3234.jpg
Auto_122_3231.jpg
LKW_122_5343.jpg

gesucht wir aber:
a) 2 Dateien vorhanden
b) Dateien: Auto_122_3234.jpg und Auto_122_3231.jpg
c) IDs: 3234 und 3231

Du musst also zaehlen und den dritten Teil des Namens rauskriegen. Dazu schiebst die Dateinamen in ein Array, sagen wir $dateien. Das sieht dann so aus:
$dateien = array();
$i = 0; //hier faengt der Zaehler an
while (false !== ($file = readdir($handle)))
{
  $file_arr = explode('_', substr($file, 0,-4));
  // substr($file, 0,-4) entspricht Auto_122_3234
  // $file_arr ist ein Array, das
  // $file_arr[0] = 'Auto'
  // $file_arr[1] = '122'
  // $file_arr[2] = '3234'
  // enthaelt. Jetzt packst du die relevanten Teile in $dateien
  $dateien[$i]['dateiname'] = $file; // also Auto_122_3234.jpg
  $dateien[$i]['id']        = $file_arr[2]; // also 3234
  $i++;//hier wird hochgezaehlt
}
Jetzt hast Du alles da, wo du es haben willst;
Mach das mal soweit und schreibe darunter
<pre>
print count($dateien);// die Anzahl der Dateien
print_r($dateien);    // der Inhalt des Arrays
Jetzt kannst Du mit einem doppelten foreach deine daten weiterverarbeiten. Man haette die Verarbeitung natuerlich auch gleich in der while -Schleife machen koennen, aber so konnte ich besser demonstrieren, was an welcher Stelle passiert. Ich hab' das nicht weiter getetstet, rechne also mit eine parr Parse errors. Ach ja, und waehrend der Entwicklung immer error_reporting aud E_ALL lassen...

Gruß,

Dieter