PHP Suchmaschine erstellen die einen ordner auf dem webspace dursucht ****?

Ich klink mich mal ein, ist es nicht etwas sehr Ressourcenlastig alle Dateien in ein Array zu speichern?

Man könnte diese doch auch direkt ausgeben, bzw wenn ich nach einer bestimmten Datei suche, dann ist es doch einfacher vor dem Hinzufügen zum Array den Namen zu prüfen. Dann braucht man später nicht nochmals durch das Array zu iterieren.
 
Wie gesagt, is_file() lieferte mir fehlerhafte Rückgabe Werte (true bei Ordner z.b.)
Das ist recht unwahrscheinlich, da bringst du etwas durcheinander oder du hattest einen Fehler im Skript.

Ich klink mich mal ein, ist es nicht etwas sehr Ressourcenlastig alle Dateien in ein Array zu speichern?

Man könnte diese doch auch direkt ausgeben, bzw wenn ich nach einer bestimmten Datei suche, dann ist es doch einfacher vor dem Hinzufügen zum Array den Namen zu prüfen. Dann braucht man später nicht nochmals durch das Array zu iterieren.
Es ist sauberer das Modell von der Präsentation zu trennen, so kann man die Rückgabe der Funktion auch anderweitig verwenden. Und es soll ja keine Suchfunktion sein, sondern ein Listing eines Verzeichnisses.
 
EVA :)

Eingabe
Verarbeitung
Ausgabe

@Napofis Dass jedes OS so so seine Eigenheit bei der Dateinamenkonvention und beim nutzbaren Zeichensatz hat, ist klar. Aber ehrlich, würdest Du bei einem Webprojekt - und sei es intern - den großen Zeichenvorrat nutzen bzw. erlauben? Nenn mich kleinlich, aber ich lasse sowas sein..

mfg chmee
 
Zuletzt bearbeitet:
@chmee:
Nein tu ich nicht, allerdings gibt es recht kreative Leute die das hier auch lesen und ausprobieren, die sich dann ärgern weil es nicht geht. Oder sind es User die sich damit überhaupt nicht auskennen und einfach nicht darauf achten.

Offensichtliche Probleme kann man vorbeugen.


timestamp hat gesagt.:
Wie gesagt, is_file() lieferte mir fehlerhafte Rückgabe Werte (true bei Ordner z.b.)
Hier nochmal die Funktion:

PHP:
function r_list_dir($dir){
  $scan        = scandir($dir);
  $dirlist      = array();
  $dirlist["path"]   = $dir;
  $size        = sizeof($scan);

  for( $i = 2; $i < $size; $i++){
    if( is_valid_file($scan[$i]) ){
      $dirlist["files"][] = $scan[$i];
    }
    else{
      $dirlist["dirs"][] = r_list_dir($dir.'/'.$scan[$i]);
    }
  }
  return $dirlist;
}
function is_valid_file($file){
  return (preg_match('/[a-z0-9 ._()\[\]-]+\.[a-z0-9]+/i', $file) == 1);
}

Wenn du is_file() genutzt hast, bist du vermutlich auf einen Eintrag gestoßen der keine reguläre Datei ist. Ohne eine weitere Prüfung gehst du davon aus das es ein Verzeichnis ist, das muss aber nicht sein. Von daher dein Fehler. Zudem unter Windows werden Verzeichnisebenen mit einem Blackslash (\) getrennt unter Linux mit einem Slash (/).
 
Ich hab das Gefühl wir drehen uns hier im Kreis. Der Test ist mit einfachen Textdateien erfolgt, wenn das keine reguläre Datei sein soll, wird die Welt 2012 wohl tatsächlich untergehen. Der Unterschied bei der Verzeichnistrennung ist mir wohl bekannt, das Script lag allerdings auf einem Linuxserver. Wie auch immer, die grundlegende rekursive Funktion ist da. Nutze wer immer sie will und passe sie so an, dass er damit die Ergebnisse bekommt, die er benötigt.
Ich klinke mich hier jetzt mal aus, wird mir zu bunt.
 
Zurück