PHP - Unterverzeichnisse nach einem Dateinamen durchsuchen

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

[Bildschirmfoto / Grafik]
 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;
}
?>

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.

<rp> Ruby Anmerkung

CSS - Animationen mit Keyframes

PHP - Wörter mit der Stoppwortliste filtern

JavaScript - Zahl runden

MySQL - Zeige Einträge von heute an

Schneller Design Wechsel
Das Design von Webseiten ändert sich ca.1–2-mal pro Jahr. Um eine Umstellung zu erleichtern, empfiehlt sich eine externe CSS-Datei. Dort kann man für die ganze Homepage zum Beispiel eine andere Hintergrundfarbe in wenigen Sekunden ändern. Weitere Informationen wie man solch eine Datei erstellt finden Sie unter: CSS-Datei erstellen.