Mit PHP in Ordner suchen?
Hallöchen zusammen,
ich hab eine Frage und zwar, möchte ich mit PHP in einem Ordner suchen.
Damit meine ich, dass ich in eine Suche () einen Text zb "Test" ein gebe und dann z.b aus dem Ordner "dateien" die Datei Test.txt ausgeben lasse. Geht das und wenn ja wie? Ich hab leider keine Ahnung. Danke schonmal für Antworten.
LG Checker0408
4 Antworten
Also du willst nur nach dem Dateinamen suchen, nicht nach dem Inhalt? Das sollte relativ einfach möglich sein. Willst du denn nur nach dem genauen Text suchen oder auch nach Teilen? Und immer nur *.txt oder beliebige Endungen?
Ok, ganz simple Version:
<?php
$search = $_GET['s'];
$dir = '/var/www/ordner/';
$files = scandir($dir);
$found = FALSE;
foreach ($files as $file) {
if (stripos($file, $search) !== FALSE) {
echo 'Datei gefunden: '. $file .'<br>';
$found = TRUE;
}
}
if (!$found) {
echo 'Keine passende Datei gefunden!';
}
Prüft einfach für alle Dateien im gegebenen Verzeichnis ob der Suchbegriff (hier via GET übergeben) irgendwo im Dateinamen (inkl beliebiger Endung) vorkommt und gibt diesen dann ggf aus.
Ich hab den Code so abgeändert:
<?php
$search = $_GET["suche"]; #muss ich hier den namen des Formulars eintragen?
$dir = 'songs/';
$files = scandir($dir);
$found = FALSE;
foreach ($files as $file) {
if (stripos($file, $search) !== FALSE) {
echo 'Datei gefunden: '. $file .'
';
$found = TRUE;
}
}
if (!$found) {
echo "Keine passende Datei gefunden!";
}
wenn ich dann zb Test eingebe kommt diese Meldung:
Notice: Undefined index: suche in C:\xampp\htdocs\songtext-online\search.php on line 3
Keine passende Datei gefunden!
woran liegt das?
Daran, dass du das Error Reporting auf "E_ALL" stehen hast und keinen Suchbegriff übergeben wurde. Ist aber nur eine Notice, also kein Fehler, kanst du verhindern indem du entweder das error reporting runter schraubst oder vorher prüfst ob diese Variable gesetzt ist, z.B. so:
if (isset($_GET['suche'])) { $search = $_GET['suche']; }
Der Name des Formulars ist dabei völlig egal, das könnte z.B. so aussehen:
<form action="" method="get"> Suchbegriff: <input type="text" name="suche"> <input type="submit" value="Suchen"> </form>
Das müsste in dem Fall in die selbe Datei noch vor den startenden PHP Tag ("<?php").
http://php.net/manual/de/function.scandir.php scandir
http://php.net/manual/de/function.strpos.php strpos
Und optional noch strtolower http://php.net/manual/de/function.strtolower.php und dann noch das formular wie üblich
Mal eine Frage zur Unklarheit: Wo liegt der Ordner? Auf dem Server oder auf dem Client?
im gleichen ordner wie das Dokument.
ich hab das Dokument in einem lokalhost ordner
php-einfach.de : dort habe ich PHP gelernt
erst mal *.txt dateien. vielleicht später noch andere ;)