Zum Inhalt springen

Suche kostenloses PHP-Suchskript ohne Datenbank.


Empfohlene Beiträge

Also ich habe grade unsere Intranetseite fertiggestellt und suche jetzt möglichst ein PHP-Skript, welches kostenlos runterzuladen ist und eine Stichwortsuche für den Ordner, in dem es liegt und allen Unterordnern kann. Eine MySQL-Datenbank ist nicht vorhanden und wird da auch nicht draufkommen, daher sind Textdateien das einzige, wo was gespeichert werden kann. Zu durchsuchende Dateien sind PHP, HTM und TXT. Am liebsten wäre mir, ich werf das Ding in einen Ordner, bastel ein Formular dazu und fertig.

Ach ja, und man soll die Ordner nicht selber eintragen müssen, das könnte ich selber proggen.

Was an Technik vorhanden ist, ist Windows 2000 Server, IIS, PHP und durchgehend IE 6.0.

Vielleicht hat ja schon mal jemand sowas gesucht und kann mir was empfehlen.:floet:

Link zu diesem Kommentar
Auf anderen Seiten teilen

Originally posted by jomama

Am liebsten wäre mir, ich werf das Ding in einen Ordner, bastel ein Formular dazu und fertig.

Naja, ganz so einfach ist's nicht, aber ich hab mal fix was gestrickt. ;)

<?php
$d = dir("/home/ICQ"); //Startdirectory
$suchwort = "test"; //Suchwort
echo "Path: ".$d->path." wird durchsucht<br>\n";
while($entry=$d->read()) {
$fp = fopen($d->path."/".$entry,"r");
$inhalt = fread($fp, filesize($d->path."/".$entry));
if (stristr($inhalt,$suchwort)!= FALSE)
{
echo ($d->path."/".$entry."<br>\n");
}
fclose($fp);

}
$d->close();
?>[/PHP]

Das Dingen kannst Dir ja dann so anpassen, wie Du möchtest. Hoffe, das hat Dir etwas geholfen.

ICQ

Link zu diesem Kommentar
Auf anderen Seiten teilen

Originally posted by *I C Q*

Naja, ganz so einfach ist's nicht, aber ich hab mal fix was gestrickt. ;)

[...]

Das Dingen kannst Dir ja dann so anpassen, wie Du möchtest. Hoffe, das hat Dir etwas geholfen.

ICQ

Den Ansatz hatte ich auch schon im Kopf, aber ich muss das so schreiben, das man neue Ordner nicht eintragen muss, also alle Unterordner automatisch durchsucht werden.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

ich würde mal das Skript was palvoelgyi im Link angibt, ausprobieren. Das was das Skript von ICQ macht, bringt vielleicht ein Ergebnis aber je nachdem wieviel auf dem Server läuft und wieviel Dokumente durchsucht werden, gibt es mit Sicherheit ärger mit dem Admin. ;)

Eine Suche die nicht über einen Index geht, ist nunmal sehr langsam und Resourcen fressend.

Gruß Jaraz

Link zu diesem Kommentar
Auf anderen Seiten teilen

Originally posted by jomama

Den Ansatz hatte ich auch schon im Kopf, aber ich muss das so schreiben, das man neue Ordner nicht eintragen muss, also alle Unterordner automatisch durchsucht werden.

Hmmm, OK, sprich: Wir arbeiten mit rekursiven Funktionen! ;)

Hab das Dingen mal ein wenig verbessert, probier's mal aus, vielleicht ist es ja das, was Du willst!


<?php
function scandir($dirname,$suchwort,&$arrfnd)
{
echo ("Durchsuche: $dirname<br>");
$handle = opendir($dirname);
while (false != ($file = readdir($handle)))
{
if (is_dir ($dirname."/".$file) && $file!="." && $file != ".." && is_readable($dirname."/".$file))
{
scandir ($dirname."/".$file,$suchwort,$arrfnd);
}
else
{
if (is_readable($dirname."/".$file))
{
$fp = fopen($dirname."/".$file,"r");
$inhalt = fread ($fp,filesize ($dirname."/".$file));
if (stristr($inhalt,$suchwort)!=FALSE)
{
array_push ($arrfnd,$dirname."/".$file);
}
fclose($fp);
}
}
}
}
$arrfnd = array();
$suchwort = "<?php"; //um z.B. alle Dateien zu finden, die php-Skripte enthalten
scandir ("/home/ICQ/",$suchwort,$arrfnd);
sort($arrfnd);
reset($arrfnd);
echo("<br>\"".htmlspecialchars($suchwort)."\" wurde in folgenden Dateien gefunden:<br>");
while (list ($nummer, $datei) = each($arrfnd))
{
echo ($nummer.": ".$datei."<br>");
}
?>
[/PHP]

[i]Originally posted by Jaraz [/i]

[b]Das was das Skript von ICQ macht, bringt vielleicht ein Ergebnis aber je nachdem wieviel auf dem Server läuft und wieviel Dokumente durchsucht werden, gibt es mit Sicherheit ärger mit dem Admin. ;)[/b]

Pffft, soll sich nicht so anstellen, der Admin! :D:D

ICQ

Link zu diesem Kommentar
Auf anderen Seiten teilen

[EDIT]

Zwei Dinge muss ich jetzt noch hinzufügen:

1. Hab's mal "gebenchmarked" und über ein grösseres Verzeichnis gejagt. Ergebnis:

Es wurden 11097 Dateien (34667166 Byte) und 726 Verzeichnisse in 29.600617051125 Sekunden gescanned!

Macht 1,1 MB/sec oder 374,9 Dateien/sec. Ist also tatsächlich nicht unbedingt das schnellste! ;)

2. Hab's danach mal über ein Riesenverzeichnis laufen lassen und da ist es mir abgestürzt mit der Meldung

Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 4422469 bytes) in /Skriptpfad/tstsearch.php on line 21

Es kann natürlich sein, dass er einfach versucht hat, eine Riesendatei zu öffnen oder einfach zu viele Rekursionen durchgeführt hat. Ich werd mal schauen, ob ich da noch was verbessern kann. ;)

[/EDIT]

ICQ

Link zu diesem Kommentar
Auf anderen Seiten teilen

Danke für die Antworten ich programmier mir aus den Vorschlägen grad selbst ne Suchmaschine. Auf die rekursiven Funktionen wär ich nie gekommen.

:uli

Hab das jetzt soweit fertig, das der Index anständig geschrieben wird.

Jetzt möcht ich gern pro Zeile, die ich indexiere Sonderzeichen wie !,:;.\ entfernen.

Ich ersetz das ganze dannmit preg_replace mit einem leeren String. Wie muss ich denn den Suchpattern schreiben?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Originally posted by *I C Q*

[EDIT]

Zwei Dinge muss ich jetzt noch hinzufügen:

1. Hab's mal "gebenchmarked" und über ein grösseres Verzeichnis gejagt. Ergebnis:

Es wurden 11097 Dateien (34667166 Byte) und 726 Verzeichnisse in 29.600617051125 Sekunden gescanned!

Macht 1,1 MB/sec oder 374,9 Dateien/sec. Ist also tatsächlich nicht unbedingt das schnellste! ;)

2. Hab's danach mal über ein Riesenverzeichnis laufen lassen und da ist es mir abgestürzt mit der Meldung

Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 4422469 bytes) in /Skriptpfad/tstsearch.php on line 21

Es kann natürlich sein, dass er einfach versucht hat, eine Riesendatei zu öffnen oder einfach zu viele Rekursionen durchgeführt hat. Ich werd mal schauen, ob ich da noch was verbessern kann. ;)

[/EDIT]

ICQ

Das wird mein Problem Gottseidank nicht sein.

Ich habs so geschrieben, das nur Dateien aufgenommen werden, die als Endung .php, .htm oder .html haben. Die hab ich mir mal in einer Liste ausgeben lassen und kam nur auf etwa sechshundert. Mein Index ist jetzt schlappe 700kB groß. Also zu vernachlässigen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...