PHP - Unterverzeichnisse nach einem Dateinamen durchsuchen

Alle Unterverzeichnisse nach einem Dateinamen oder Inhalt durchsuchen und die gefundene Dateien als Link ausgeben.

[Bildschirmfoto] Alle Unterverzeichnisse nach einem Dateinamen durchsuchen
Alle Unterverzeichnisse nach einem Dateinamen durchsuchen

<?php

/*
 * Alle Unterverzeichnisse nach einem Dateinamen oder Inhalt durchsuchen
 * und die gefundene Dateien als Link ausgeben.
 */

// Verzeichnis angeben
$verzeichnis "./";

// Dateiendungen (Text-Dateien)
$dateiendungen = ["txt""htm""php"];

$suche = isset($_POST["text"]) ? $_POST["text"] : '';
$suche htmlspecialchars($suche);
$checked = isset($_POST["matchCase"]) ? ' checked="checked"' '';
$checked2 = isset($_POST["order"]) ? ' checked="checked"' '';
$checked3 = isset($_POST["files"]) ? ' checked="checked"' '';

echo 
'<form method="post">
 <label> Suche: <input type="search" name="text" value="' $suche '" size="40" required="required" autofocus="autofocus"></label>
 <input type="submit" value="los"><br>
 <label><input type="checkbox" name="matchCase"' $checked '> Groß- und Kleinschreibung beachten</label><br>
 <label><input type="checkbox" name="order"' $checked2 '> Sortierreihenfolge ändern</label><br>
 <label><input type="checkbox" name="files"' $checked3 '> Dateien (' implode(", "$dateiendungen) . ') öffnen und durchsuchen</label>
</form>';

if (
$_SERVER["REQUEST_METHOD"] == "POST") {
 
$ergebnis alle_dateien($verzeichnis$_POST["text"]);

 if (isset(
$_POST["order"])) {
  
rsort($ergebnis);
 }
 else {
  
natcasesort($ergebnis);
 }

 foreach (
$ergebnis as $zaehler => $element) {
  
$element str_replace('\\''/'$element);
  list(
$link$datum$bytes) = explode('|'$element);
  
$datum date("d.m.Y H:i"$datum);
  echo (
$zaehler+1) . '. <a href="'$link .'">'$link .'</a> <small>' $datum ' - ' $bytes ' Bytes</small><br>';
 }
}

function 
alle_dateien($dir$text) {
 global 
$dateiendungen;
 
$files = Array();
 
$file_tmp glob($dir '*'GLOB_MARK);

 foreach (
$file_tmp as $item) {

  if (
substr($item,-1) != DIRECTORY_SEPARATOR) {

   if (isset(
$_POST["files"]) &&
       
is_file($item)) {

    if (
in_array(substr($item, -3), $dateiendungen)) {
     
$text file_get_contents($item);

     if (!isset(
$_POST["matchCase"])) {
      
$text strtolower($text);
     }

     if (
substr_count($text$_POST["text"]) > 0) {
      
$files[] = $item '|' filemtime($item) .  '|' filesize($item);
     }
    }
   }
   else {

    if (isset(
$_POST["matchCase"])) {

     if (
strstr($item$text)) {
      
$files[] = $item '|' filemtime($item) .  '|' filesize($item);
     }
    }
    else {

     if (
stristr($item$text)) {
      
$files[] = $item '|' filemtime($item) .  '|' filesize($item);
     }
    }
   }
  }
  else {
  
$files array_merge($filesalle_dateien($item$text$_POST));
  }
 }
 return 
$files;
}
?>

Siehe auch: Den Inhalt aller Textdateien nach einem Suchbegriff durchsuchen, Dateien im Verzeichnis rekursiv auflisten, mit Filter, Suche nach Übereinstimmungen mit regulärem Ausdruck und Suchbegriffe hervorheben

Tipp

Kleine Suchmaschine - Diese Suchmaschine durchsucht das aktuelle Verzeichnis und/oder andere Verzeichnisse. Die Dateiendungen der Dateien die durchsucht werden sollen können angeben werden. Des weiteren ist es möglich ein Vorzeichen bei Dateien die nicht durchsucht werden sollen zu setzen und vieles mehr.

Bausteine  Alle Anzeigen

Eine zufällige Auswahl von Codeschnipseln aus den Bereichen HTML, CSS, PHP, JavaScript und MySQL.

<q> Logische Auszeichnung

CSS - Textbereich als veränderbare Bildanzeige verwenden

PHP - Gerade oder ungerade Zahl ermitteln

JavaScript - Bei Bestätigung zur nächsten Seite

MySQL - Benutzer nach 1 Stunde zurücksetzen