alle dateien eines verzeichnises durchsuchen ?

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • alle dateien eines verzeichnises durchsuchen ?

    Wie kann ich ALLE Dateien in einem Verzeichnis nacheinander nach einem bestimmten String druchsuchen lassen ?

    Ich muss wohl nicht erwähnen das ich PHP Newbie bin um so eine frage zu stellen

    Fileopen ist mir ja geläufig aber wie schaff ich es eben das ich ALLE Files aus einem Verzeichnis nacheinander abfrage ?

  • #2
    Du brauchst zwei Funktionen:
    1. eine Funktion, die alle dateinamen eines Verzeichnis in ein Array liest
    2. eine Funktion, die jedes File durchsucht.

    die erste Funktion gibts hier irgendwo im Forum...

    oder grep
    Beantworte nie Threads mit mehr als 15 followups...
    Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

    Comment


    • #3
      mit unterordnern gibts hier:
      http://www.php-resource.de/forum/sho...threadid=11203

      mit nur einem Ordner ausm Manual:
      <?php
      $handle=opendir('.');
      while ($file = readdir ($handle)) {
      if ($file != "." && $file != "..") {
      echo "$file\n";
      }
      }
      closedir($handle);
      ?>

      für das Durchsuchen der Dateien:
      die Dateien der Ordner in ein Array schreiben lassen, dieses array durchgehen und jede datei öffnen und auch in ein Array (oder ein Mehrdimensionales). dann kannst du bequem suchen

      was haste denn vor, vielleicht gibts ja schon was fertiges ?!

      gruss

      Comment


      • #4
        PHP Code:
        <?
        function such($dir,$needle) {
            $subdirs=array();
            $matches=0;

            $dirh=opendir($dir);

            while($filename=readdir($dirh)) {
                if($filename!=".." && $filename!=".") {
                    
                    if(is_file($dir."/".$filename)) {
                        $cont = "";
                        
                        $fp = @fopen($dir."/".$filename,"rb");

                        while(!feof($fp)) {
                           $cont.= fread($fp,1024);
                        }

                        fclose($fp);

                        if (strpos($cont,$needle)) {
                           $matches++;
                           print "Match found in file: $dir/$filename<br>\n";
                        }

                    } elseif(is_dir($dir."/".$filename)) {
                        $subdirs[]=$dir."/".$filename;
                    }
                }
            }
            closedir($dirh);

            for($i=0;$i<count($subdirs);$i++) {
                $size+=such($subdirs[$i]);
            }

            return $matches;
        }

        print "<hr>".such(".","for")." Matches found<br>\n";
        Falls Du einen Error bekommst
        Fatal error: Maximum execution time of 30 seconds exceeded in ... on line 18
        -> That's live

        Comment


        • #5
          wenn schon so ein skript, dann kann man auch die max-execution-time hochstellen

          Comment


          • #6
            Wolllte nur mal fragen wie ich die funktion am besten anspechen könnte.
            Habe noch nie mit einer funktion gearbeitet.

            Wie schicke ich denn die Suchanfrage an die Funktion?

            Comment

            Working...
            X