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.

<fieldset> Formularelemente gruppieren

CSS - Krieg der Sterne

PHP - Text nach dem Alphabet sortieren

JavaScript - Lichtregler

MySQL - Alle Einträge nach einem Tag löschen