Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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:

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

  • Autor
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.

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

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

[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

  • Autor

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?

  • Autor
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.

Hi,

in der aktuellen c't ist dazu übrigens ein Artikel.

Dort wird das Perl Skript Perlfect näher vorgestellt.

http://www.perlfect.com/freescripts/search/

Gruß Jaraz

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.