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