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 [Bildschirmfoto]
Alle Unterverzeichnisse nach einem Dateinamen durchsuchen](img/unterverzeichnisse_nach_einem_dateinamen_durchsuchen.png)
<?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($files, alle_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.
<col> Tabellenspalten vordefinieren
PHP - Datum der nächsten sieben Tage ausgeben