Dateipfade auslesen

Diese Klasse "kenne ich", jedoch bin ich noch nicht in der Lage sie nachzuvollziehen, geschweige denn Anpassungen vorzunehmen!

Edit:

Ich bin grad am tüfteln, wie ich es ohne Klasse anstellen könnte.

Wie kann ich folgende Anweisung umkehren:

if(in_array()) (wenn nicht im array dann)

Bin im Moment grad ein bisschen "stuck".

zB. suche ich eine Möglichkeit folgendes zu machen:

Ich habe ein array, jedes Element ist mit einem String gefüllt. Nun möchte ich den String jedes Elements dieses Arrays auftrennen. Ich brauche am Schluss also für jedes Element des 1. Arrays ein neues Array, welches dann den aufgeteilten String enthält!
 
Zuletzt bearbeitet:
Also, ich bin immer noch dran!

Mit dem Script von flex lese ich alle Pfade in ein Array! Dort drin sind dann sowohl Verzeichnispfade als auch Dateipfade!

Nun muss ich noch die Dateipfade der Unterverzeichnisse in ein Array bekommen. Da ich nur die 1. Stufe Unterverzeichnisse benötige, sollte es eigentlich ohne Klassen machbar sein.

Ich bin nun soweit, dass ich die Verzeichnispfade in einem einzelnen Array habe. Ich habe mir gedacht, dass bei allen Dateien in den letzten 4 Zeichen ein "." vorkommt. Bei den Verzeichnissen nicht. Dies habe ich mir zunutze gemacht, um die Verzeichnisse von den Dateien zu trennen. Nun muss ich noch diese Verzeichnisse Öffnen, um die Dateien darin auszulesen!

Leider komme ich da nicht mehr weiter!

Hier der Code:

PHP:
<?php
if ($handle = opendir('.')) {
   while (false !== ($file = readdir($handle))) {
       if ($file != "." && $file != "..") {
           $array_path[]= realpath($file);
       }
   }
   closedir($handle);
} 
$count_array_path=count($array_path);

for ($i=0; $i<=$count_array_path; $i++)
{
    $test=substr($array_path[$i],-4,1); //die letzten 4 Zeichen auslesen, falls darin kein Punkt vorkommt, handelt es sich um ein Verzeichnis
    if($test!==".")
    {
        $array_dirs[$i]=$array_path[$i];
        unset($array_path[$i]);
        echo "$array_dirs[$i]<br>";
    }    
}    

$count_array_dirs=count($array_dirs);

//hier wäre ist am Schluss noch eine for Schleife nötig
    $temp=$array_dirs[0];
    if ($handle = opendir('$temp')) //da happerts, warum?
        {
               while (false !== ($file = readdir($handle))) 
                {
                       if ($file != "." && $file != "..") 
                         {
                               $array_path1[]= realpath($file);
                           }
                   }
               closedir($handle);
        } 

foreach($array_path1 as $temp)
{
echo "$temp<br>";
}
    
 

?>
 
Warum machst du in der betreffenden Zeile '$temp' die Variable in Hochkommata ?
Mir ist nichts bekannt wo das sinnvoll erscheinen mag.

Evtl. hilft dir der Codeschnipsel, der findet alles was zu finden gibt :p
PHP:
<?php
  $insgroesse;
  ordner(".");
  $kb = $insgroesse/1024;
  $mb = $kb/1024;
  echo "<br>Insgesamt sind <b>$insgroesse</b> Byte hochgeladen.
        <br>Insgesamt sind <b>$kb</b> KByte hochgeladen.
        <br>Insgesamt sind <b>$mb</b> MByte hochgeladen.";

  function ordner($dir)
  {
      $handle=opendir($dir);
      while (FALSE !== ($file = readdir($handle)))
      {
          if ($file != "." && $file != "..")
          {
              $path = $dir."/".$file;
              if(is_dir($path))
              {
                echo "<img src='dir.gif'><b>".$file."</b><br>\n";
                  ordner($path);
              }
              else
              {
                echo "<a href='".$dir."/".$file."'>".$file."</a><br>\n";
                 $groesse = filesize("$dir/$file");
                 echo "Die Datei: $file ist $groesse Byte gross.<br>\n";
                  global $insgroesse;
                  $insgroesse+=$groesse;
              }
          }
      }
      closedir($handle);
      //return rmdir($dir);
  }
?>
 

Anhänge

  • 26140attachment.gif
    26140attachment.gif
    1.006 Bytes · Aufrufe: 55
Zuletzt bearbeitet:
Der Pfad steht doch immer in Anführungszeichen?
Mein Problem liegt im Moment darin, dass ich das Verzeichnis, welches bekannt ist, nicht öffnen kann!

opendir('testpfad/testpfad'))



Wenn ich für den Pfad den nächsten Unterordner ohne Slashs angebe, dh. opendir('test'); dann kommt zwar keine Fehlermeldung mehr, aber es wird auch nichts ausgegeben! Das Verzeichnis ist jedoch nicht leer!
 
Zuletzt bearbeitet:
Ok, funktioniert trotzdem nicht!

Das Script wird in einem Verzeichnis ausgeführt, nun möchte ich ein Unterverzeichnis öffnen. Durch was muss ich dann '.' ersetzen? 'unterverzeichnis' ? Habe schon alles ausprobiert was mir spontan in den Sinn gekommen ist, bisher ohne Erfolg!
 
Wenn Du im aktuellen Verzeichnis ein Unterverzeichnis hast kannst Du dies auf 3 Arten ansprechen:
PHP:
$dir=opendir('unterverzeichnis');
PHP:
$dir=opendir('./unterverzeichnis');
PHP:
$dir=opendir('/der/ganze/pfad/hier/her/unterverzeichnis');
 
Habe alles ausprobiert, ohne Erfolg.

Habe dann mal in der While Schleife $file ausgegeben. Und siehe da, die Dateinamen werden ausgegeben! Irgend was mit der Funktion realpath stimmt nicht, denn die Dateinamen alleine lassen sich nämlich auslesen, nur wenn der ganze Pfad ausgelesen werden soll, wird mit echo nichts ausgegeben. Wenn ich jedoch die Elemente im Array zähle, so hat es dort soviele Elemente wie Dateien im Verzeichnis.
 
Probier es mal so:

PHP:
$folder = "./upload/";
if($folderpointer = opendir($folder)) 
{
    while($isfile = readdir($folderpointer))
    {
        if(is_dir($isfile)) $allfolders[] = $isfile;
        else $allfiles[] = $isfile;

    }
    closedir($folderpointer);
}

Ja, ich weis, die Variablen sind etwas wirr, aber es funktioniert.
Subfolder stehen in $allfolders drin und lassen sich dann auf gleiche Weise wie oben auslesen...
 
Zuletzt bearbeitet:
Richtig, so funktioniert es bei mir auch! Dh. ich kann alle Dateinamen von Unterverzeichnissen in ein Array schreiben.

Sobald ich aber die funktion realpath(); verwende, ist die Ausgabe des Arrays leer (obschon der Array Elemente enthält).

Wenn ich den absoluten Pfad hätte, wäre das für mich praktischer.

Mein Ziel ist es, ein Array zu haben in welchem sich die Pfade von Dateien im Unterverzeichnis 1. Stufe befinden.

Beispiel:

testverzeichnis

Darin befinden sich 2 weitere verzeichnisse, unterverzeichnis1, unterverzeichnis 2!
In beiden hat es Dateien, datei1, datei2.

Der Array sollte dann folgende Daten aufnehmen:

/unterverzeichnis1/datei1
/unterverzeichnis1/datei2
/unterverzeichnis2/datei1
/unterverzeichnis2/datei2

Den Rest des Pfades brauche ich nicht.

Die Dateien von denen ich den Pfad brauche, befinden sich alle in einem Unterverzeichnis. In diesem Unterverzeichnis hat es jedoch nur Dateien und keine weiteren Verzeichnisse mehr!

Ev. ein bisschen schwer verständlich geschrieben, ich weiss im Moment nicht, wie ich mir klarer ausdrücken soll!
 
Zurück