Mit PHP in Ordner suchen?

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?


Checker0408 
Fragesteller
 14.02.2017, 20:21

erst mal *.txt dateien. vielleicht später noch andere ;)

0
mastema666  14.02.2017, 20:27
@Checker0408

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.

0
Checker0408 
Fragesteller
 14.02.2017, 20:50
@mastema666

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?

0
mastema666  14.02.2017, 21:04
@Checker0408

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").

0

Mal eine Frage zur Unklarheit: Wo liegt der Ordner? Auf dem Server oder auf dem Client?


Checker0408 
Fragesteller
 14.02.2017, 20:19

im gleichen ordner wie das Dokument.

ich hab das Dokument in einem lokalhost ordner

0

php-einfach.de : dort habe ich PHP gelernt