Suchscript von Werner

PHP, CSS und JavaScript lernen. Anwendungen für Webseiten
Benutzeravatar
Werner-Zenk.de
Mitglied (Level 10)
Mitglied (Level 10)
Beiträge: 755
Registriert: Di 8. Dez 2020, 19:42
Wohnort: Bamberg
Kontaktdaten:

Re: Suchscript von Werner

Ungelesener Beitrag von Werner-Zenk.de »

Bei mir funktioniert das:
skript_sammler.png
schabau
Mitglied (Level 5)
Mitglied (Level 5)
Beiträge: 43
Registriert: Do 25. Aug 2022, 13:24
Wohnort: Cottbus
Kontaktdaten:

Re: Suchscript von Werner

Ungelesener Beitrag von schabau »

Werner-Zenk.de hat geschrieben: Sa 27. Aug 2022, 18:05 Bei mir funktioniert das:
skript_sammler.png
Dann weiß ich auch nicht, warum es hier geht. Ist bei mir auch ein ganz normaler Tab mit Notepad++ gemacht.
Ob Tab, Zeilenumbruch mit Enter oder wie es sich gehört mit <br> spielt keine Rolle. Gebe ich als Suchwort "wort" ein, finde ich alle Seiten in denen dies vorkommt. Gebe ich "wort1", "wort2", "wort3", "wort4", "wort1 wort2" oder "wort 3 wort4" ein, erscheint als Ergebnis nur die Datei aa.html. Das Suchwort ist auf der Ergebnisseite wie auch beim öffnen der Seite markiert.
Das "Zitat des Augenblicks" gibt es nur auf
http://schabau.eu
Meine "Merkzettel"
http://helpdesk.schabau.eu
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5743
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Suchscript von Werner

Ungelesener Beitrag von Tommy Herrmann »

Moin,

also bei mir wird das auch zusammenhängend und auch einzeln gezeigt, was ich auch vollkommen OK finde, denn Hauptsache es wird gefunden.

Meine "Kleine Suchmaschine" vom Werner ist allerdings auch eine frühe Version vom Februar 2017. Habe das nie geändert weil ich wegen der unterschiedlichen Mobirise-Menüleisten ziemlich viel am Skript geändert habe.

Gebe ich z.B. "Visual Lightbox" ein, werden gefunden:

zusammenhängend "Visual Lightbox" und nur "Visual" und nur "Lightbox"

https://www.mobirise-tutorials.com/Such ... ontent1-98


Kleine Suchmaschine.jpg
schabau
Mitglied (Level 5)
Mitglied (Level 5)
Beiträge: 43
Registriert: Do 25. Aug 2022, 13:24
Wohnort: Cottbus
Kontaktdaten:

Re: Suchscript von Werner

Ungelesener Beitrag von schabau »

Tommy Herrmann hat geschrieben: So 28. Aug 2022, 08:15 Moin,

also bei mir wird das auch zusammenhängend und auch einzeln gezeigt, was ich auch vollkommen OK finde, denn Hauptsache es wird gefunden.
Hallo Tommy,

ich bekomme auch nicht raus, warum bei mir die Suchbegriffe gefunden wurden, bei Werner aber nicht. Ist mir unerklärlich.

Ich habe jetzt für alle Fälle noch eine preg_replace Zeile eingefügt, die aus dem $text alle Tabs, Zeilenumbrüche und doppelten Leerzeichen eliminiert. Wegen der regulären Ausdrücken bin ich zwar kein Freund von preg_replace, aber es funktioniert noch genauer als im originalen Skript.

Code: Alles auswählen

// Tabulatoren, Zeilenumbrüche und überflüssige Leerzeichen aus dem Text entfernen.
$text = preg_replace('/\s+/', ' ', $text);
Lt. php.net dürften mit \s nur Leerzeichen entfernt werden aber der Ergebnistext ist absolut sauber, ohne Tab oder sonst irgend etwas. Und genau darum mag ich Sachen mit regulären Ausdrücken.

Die zu suchenden Dateien, einmal als *.txt und einmal als *.html:
aa.txt.jpg
aa.html.jpg
Und das ist dann die Ausgabe von meiner Variante mit preg_replace und mit der originalen Variante mit strtr.
suchmaschine_neu.jpg
suchmaschine_original.jpg
Warum bei meiner Variante aber Tabs und Zeilenumbrüche auch weg sind, verstehe ich einfach nicht. Auf der Ergebnisseite ist mal abgesehen vom .\ im Dateipfad alles gleich.
suchmaschine2_neu.jpg
suchmaschine2_original.jpg
Viele Grüße
Detlef Paschke
Das "Zitat des Augenblicks" gibt es nur auf
http://schabau.eu
Meine "Merkzettel"
http://helpdesk.schabau.eu
schabau
Mitglied (Level 5)
Mitglied (Level 5)
Beiträge: 43
Registriert: Do 25. Aug 2022, 13:24
Wohnort: Cottbus
Kontaktdaten:

Re: Suchscript von Werner

Ungelesener Beitrag von schabau »

ich habe noch einen kleinen Fehler im Zusammenhang mit der Markierung des Suchwort im angezeigten Dateilink gefunden. Habe ich gleich wieder behoben.
Tabs, Leerzeichen und Zeilenumbrüche können der Suche jetzt eigentlich nicht mehr im Weg sein, das wird alles entfernt. Für alle die es brauchen, hier noch mal der gesamte, korrigierte Code.

Viele Grüße
Detlef Paschke

Code: Alles auswählen

<!DOCTYPE html>
<html lang="de">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1.0">
    <title>Seitenname - Suche nach <?=(isset($_GET["suchbegriff"]) ? '"' . htmlspecialchars($_GET["suchbegriff"], ENT_HTML5, 'UTF-8') . '"' : ''); ?></title>
   <!-- <link rel="stylesheet" href="./style.css" type="text/css"> -->

<style>
   body {
      font-family: Verdana, Arial, Tahoma, Sans-Serif;
      font-size: 0.90rem;
   }

  /* Textausschnitt */
  samp {
  font-family: inherit;
  font-style: Oblique;
  }

 /* Suchbegriff hervorheben */
  mark {
  background-color: #D5FFAA;
}

  /* Datei-Info */
  var {
  color: #00AF02;
  font-size: 0.7rem;
}

  /* Suchergebnisse (Nummerierte Liste) */
  li {
  margin-top: 20px;
}

  /* Meta-Tags */
  cite {
  font-family: inherit;
  font-size: 0.7rem;
  font-style: Normal;
}

  /* Eingabefeld */
  input[type="search"], 
  input[type="submit"] {
  font-family: inherit;
  font-size: 1.0rem;
  line-height: 1.0;
  border: 1px solid #7A7A7A;
  transition: box-shadow 0.3s;
}
  input[type="search"]:focus, 
  input[type="submit"]:focus {
  border:0; outline:0; /* Chromium */
  border: 1px solid #0078D7;
  box-shadow: 0px 0px 4px 0px #2284E6;
  line-height: 1.0;
}
</style>
  </head>
   <body>
    <aside>
<?php
   /* Die zu durchsuchenden Verzeichnisse eintragen, ausgehend
      vom aktuellen Verzeichnis in dem diese Datei liegt.
      Untereinander liegende Verzeichnisse müssen nicht einzelnen
      aufgeführt werden. Bei parallel liegenden Verzeichnissen jeweils
      das oberste gewünschte Verzeichnis angeben.
      Aktuelles Verzeichnis durchsuchen mit "./"   */
$verzeichnisse = [
   //   "./",
      "./archiv",
];

   /* Dateiendungen der Dateien, die gesucht werden sollen. */
   $dateiendungen = [
      ".htm",
      ".html",
      ".php",
      ".txt",
   //   ".pdf",
   //   ".gif",
   //   ".jpg",
   //   ".png",
   ];

   /* Dateiendungen in der oberen Liste, die keine "Textdateien" sind.
      Auf der Ergebnisseite wird nur der Dateiname angezeigt. */
   $_dateiendungen = [
      ".pdf",
      ".gif",
      ".jpg",
      ".png",
   ];

   /* Vorzeichen bei Dateien die nicht durchsucht werden
      sollen z.B. _intern.htm oder .login.php (nur 1 Zeichen) */
   $vorzeichen = [
   //   ".",
   //   "_",
   ];

   /* Einzelne Dateien die nicht durchsucht werden sollen */
   $nicht_durchsuchen = [
   //   "privat.htm",
   //   "login.php",
   ];

   /* Länge des minimalen Suchbegriffs */
   $suchbegriff_min = 3; // 3

   /* Länge des maximalen Suchbegriffs */
   $suchbegriff_max = 100; // 100

   /* Maximale Anzeige (Begrenzung) der Ergebnisse */
   $suchergebnisse_max = 50; // 50

   /* Unerwünschte Eingaben von der Suche ausschließen */
   $ausschluss_eingaben = [
   //   "Demotext",
   //   "Demotext2",
   ];

   /* Automatische Weiterleitung wenn nur eine Datei
      gefunden wurde (ja/nein) */
   $auto_weiterleitung = "nein"; // ja

   /* Ziel in neuem Fenster/Tab öffnen.
      Mit _blank wird ein neuer Tab geöffnet, _self öffnet im selben Fenster/Tab.
      Möchte man unterschiedliche iFrame für Sucheingabe und Suchergebnis verwenden,
      kann "_top" oder "_parent" verwendet werden. */
   $target = "_parent"; // leer oder _self

   /* Tipps anzeigen wenn nichts gefunden wurde (ja/nein) */
   $tipps_anzeigen = "ja"; // ja

   /* Die Ergebnisse nach der letzten Dateiänderung sortieren (ja/nein).
      Bei "nein" erfolgt die Sortierung nach der Anzahl der gefundenen Ergebnisse. */
   $sortierung_dateiaenderung = "nein"; // nein

   /* Ergebnis der Suche (Datum, Suchanfrage und Trefferzahl) speichern (ja/nein) */
   $sucheingabe_speichern = "nein"; // nein

   /* Name der Datei in der die Sucheingaben gespeichert werden.
      Diese Datei wird beim ersten Eintrag autom. erzeugt! */
   $suchdatei = "suchbegriffe.txt"; // suchbegriffe.txt

   /* Bereits eingetragene Sucheingaben als Auswahl im 
      Formularfeld anzeigen (ja/nein) 
      $sucheingabe_speichern muss auf "ja" stehen! */
   $datenliste_anzeigen = "nein"; // nein

   /* Datei-Info - Letzte Änderung und Dateigröße (ja/nein) */
   $datei_info = "ja"; // ja

   /* Pfad-Info - Pfad anzeigen (ja/nein) */
   $pfad_info = "ja"; // ja

   /* Status-Info - Anzahl der durchsuchten Verzeichnisse
      und Dateien anzeigen (ja/nein) */
   $status_info = "nein"; // nein

   /* Länge des angezeigten Textausschnitts */
   $textausschnitt = 150; // 150 Zeichen

   /* Treffer auf der gefundenen Seite hervorheben (ja/nein).
      Diese Funktion wird noch nicht von allen Browsern unterstützt! */
   $treffer_hervorheben = "ja"; // ja

   /* Folgende Zeichen, Wörter oder HTML-Attribute aus dem
      Textausschnitt ersetzen oder entfernen. */
   $entfernung_zeichen = [
   //   'Privat' => '',
   ];

   /* Inhalt entfernen der zwischen den folgenden HTML-Tags liegt.
      Dieser Inhalt wird nicht in der Suche berücksichtigt. */
   $entfernung_inhalt = [
      "h1", // <h1></h1>
      "h3", // <h3></h3>
      "nav", // <nav></nav>
   //   "head", // <head></head>
   //   "footer", // <footer></footer>
   ];

   /* Einen bestimmten HTML-Bereich für die Suche definieren
      z.B.: body, main oder article.
      Leer lassen wenn diese Option nicht verwendet werden soll. */
   $suche_in_bereich = "";

   /* META-Tags, wenn diese vorhanden sind, anzeigen (ja/nein).
      Z. B. der Inhalt vom 'content'-Attribut: <meta name="description" content="Beschreibung der Seite."> */
   $metatags_anzeigen = "nein"; // nein

   /* META-Tags in die Suche einschließen (ja/nein) */
   $metatags_durchsuchen = "nein"; // nein

   /* Diese META-Tags durchsuchen */
   $metatags_attribute = [
      "description",
      "keywords",
      // "author",
      // "date",
   ];

   /*  Zeitzone setzen (siehe: http://php.net/manual/de/timezones.europe.php) */
   date_default_timezone_set("Europe/Berlin");

   /* PHP-Fehlermeldungen anzeigen (0/E_ALL) */
   error_reporting(0); // 0

   $datenliste = "";
   if (
      $sucheingabe_speichern == "ja" &&
      $datenliste_anzeigen == "ja" &&
      file_exists($suchdatei)
   ) {
      $datenliste = [];
      foreach (file($suchdatei, FILE_SKIP_EMPTY_LINES | FILE_IGNORE_NEW_LINES) as $element) {
         list($datum, $begriff, $anzahl) = explode('|', $element);
         if ($anzahl > 0) {
            $datenliste[] = $begriff;
         }
      }
      sort($datenliste);
      $datenliste = '<datalist id="liste"><option>' . implode('<option>', array_unique($datenliste)) . '</datalist>';
   }

   // Formular anzeigen
   echo '<p>';
   echo '<form method="get" action="#Form" id="Form">
 <input type="search" name="suchbegriff" placeholder="Suchbegriff eingeben" value="' .
      (isset($_GET["suchbegriff"]) ? htmlspecialchars($_GET["suchbegriff"], ENT_HTML5, 'UTF-8') : '') .
      '" size="35" minlength="' . $suchbegriff_min . '" maxlength="' . $suchbegriff_max . '" list="liste" required="required" spellcheck="true">
 ' . $datenliste . '
 <input type="submit" name="suche" value="suchen">
</form>
';

   $suchergebnisse = [];
   $gefunden = 0;
   $anzahl_dateien = 0;
   $hyperlink = "";
   $directories = [];
   $filter = '/\.(?:' . str_replace(".", "", implode("|", $dateiendungen)) . ')$/i';
   $startzeit = microtime(true);
   $url = 'http' . (isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == 'on' ? 's' : '') . '://' . $_SERVER["HTTP_HOST"] . dirname($_SERVER["SCRIPT_NAME"]);
   array_push($nicht_durchsuchen, basename($_SERVER["SCRIPT_NAME"]));

   if (
      isset($_GET["suche"]) ||
      isset($_GET["suchbegriff"])
   ) {
      $_GET["suchbegriff"] = rawurldecode($_GET["suchbegriff"]);
      $_GET["suchbegriff"] = str_replace([',', '.', ':', ';', '!', '?', '"', "'", "\t"], '', preg_replace('/\s\s+/', ' ', trim($_GET["suchbegriff"])));
         foreach ($ausschluss_eingaben as $ausschluss) {
            if (mb_strtolower($_GET["suchbegriff"]) == mb_strtolower($ausschluss)){
            echo '<p>Die Suchanfrage <i>' . $_GET["suchbegriff"] . '</i> ist unerwünscht und wird verworfen.</p>';
            $_GET["suchbegriff"] = trim(($_GET["suchbegriff"]), "\x00..\xFF");
            }
        }

      if (
         mb_strlen($_GET["suchbegriff"]) >= $suchbegriff_min &&
         mb_strlen($_GET["suchbegriff"]) <= $suchbegriff_max
      ) {

      foreach ($verzeichnisse as $verzeichnis) {
         $iterator = new RecursiveIteratorIterator(
            new RecursiveDirectoryIterator($verzeichnis)
         );
         $dateifilter = new RegexIterator($iterator, $filter);

         foreach ($dateifilter as $zeiger) {
            if ($zeiger->isFile()) {
               $datei = $zeiger->getPathname();
               $dateiname = $zeiger->getBasename();
               $dateiendung = '.' . $zeiger->getExtension();

               if (!in_array(dirname($zeiger->getPathname()), $directories)) {
                  $directories[] = dirname($zeiger->getPathname());
               }

               if (
                  !in_array(substr($dateiname, 0, 1), $vorzeichen) &&
                  !in_array($dateiname, $nicht_durchsuchen)
               ) {
                  $text = (!in_array($dateiendung, $_dateiendungen)) ? file_get_contents($datei) : mb_substr(strtoupper($dateiendung), 1) . '-Datei';
                  preg_match('/<title>(.*?)<\/title>/is', $text, $treffer);
                  $titel = isset($treffer[1]) ? $treffer[1] : $dateiname;
                  unset($treffer[1]);
                  $anzahl_dateien++;
                  $meta = ($metatags_anzeigen == "ja" && count(get_meta_tags($datei)) > 0) ? '<br><cite>&#10151; ' . implode(' &#10151; ', get_meta_tags($datei)) . '</cite>' : '';

                  if ($metatags_durchsuchen == "ja" && get_meta_tags($datei)) {
                     $metatag_array = get_meta_tags($datei);

                     foreach ($metatags_attribute as $attribut) {
                        if (isset($metatag_array[$attribut]))  $text .= ' [' . $attribut . ': ' . $metatag_array[$attribut] . ']';
                     }
                  }

                  $text = strtr($text, $entfernung_zeichen);

                  if (!empty($suche_in_bereich)) {
                     preg_match('/<' . $suche_in_bereich . '>(.*?)<\/' . $suche_in_bereich . '>/Usi', $text, $bereich);
                     $text = isset($bereich[1]) ? $bereich[1] : '';
                  }

                  foreach ($entfernung_inhalt as $htmltag) {
                     $text = preg_replace('/\<' . $htmltag . '\>(.*)\<\/' . $htmltag . '\>/Usi', '', $text);
                  }

                  // Tabulatoren, Zeilenumbrüche und überflüssige Leerzeichen aus dem Text entfernen.
                  $text = preg_replace('/\s+/', ' ', $text);

                  // Bereich <title> im Textausschnitt (nicht in der Suche) entfernen um Doppelungen auf der Ergebnisseite zu vermeiden.
                  $textteil = preg_replace('/<title>(.*?)<\/title>/is', '', $text);
                  $textteil = strip_tags(html_entity_decode($textteil));

                  $text = strip_tags(html_entity_decode($text));
                  $preg = explode(" ", $_GET["suchbegriff"]);

                  if (strstr($_GET["suchbegriff"], "-")) $preg = explode("-", $_GET["suchbegriff"]);
                  $pregCount = count($preg);
                  $preg = implode(".*?|", $preg);

                  if ((mb_strstr($text, $_GET["suchbegriff"]) or
                        mb_stristr($text, $_GET["suchbegriff"]) or
                        mb_stristr($text, mb_strtolower($_GET["suchbegriff"])) or
                        mb_stristr($dateiname, $_GET["suchbegriff"]) or
                        preg_match("/" . $preg . "/is", $text)) &&
                     $gefunden <= $suchergebnisse_max
                  ) {
                     $gefunden++;
                     $hyperlink = $link = $url . str_replace(['../', './'], '', $datei);
                     $start = mb_strpos(mb_strtolower($textteil), mb_strtolower($_GET["suchbegriff"])) - $textausschnitt;
                     if ($start < 0) $start = 0;
                      $ende = mb_strlen($_GET["suchbegriff"]) + $textausschnitt * 2;
                      $textteil = mb_substr($textteil, $start, $ende);
                      $textteil = (mb_strlen($texteil) > $textausschnitt ? mb_substr($textteil, mb_strpos($textteil, $_GET["suchbegriff"]), $textausschnitt) : $textteil);
                      $treffer = mb_substr_count(mb_strtolower($text), mb_strtolower($_GET["suchbegriff"]));
                      $worte = preg_split('/[\s]+/', $_GET["suchbegriff"]);

                     foreach ($worte as $wort) {
                      $textteil = preg_replace('/(' . $wort . ')/i', "<mark>$1</mark>", $textteil);
                      $titel = preg_replace('/(' . $wort . ')/i', "<mark>$1</mark>", $titel);
                      $link = preg_replace('/(' . $wort . ')/i', "<mark>$1</mark>", $link);
                     }

                     $suchergebnisse[($sortierung_dateiaenderung == "ja" ? date("Y-m-d H:i:s", filemtime($datei)) : sprintf("%02s", $treffer) . sprintf("%02s", $gefunden))] =
                        '<li><a href="' . $hyperlink . ($treffer_hervorheben == "ja" ? '#:~:text=' . $_GET["suchbegriff"] : '') . '" target="' . $target . '">' . $titel . '</a> <small>(' . ($treffer == 0 ? 1 : $treffer) . 'x)</small>' . $meta . '<br><samp>&hellip; ' . $textteil . ' &hellip;</samp>' .
                        ($datei_info == "ja" ? '<br><var>Erstellt: ' . date("d.m.Y H:i", filemtime($datei)) . ' - ' . number_format((filesize($datei) / 1024), 1, ",", ".") . ' KB' . ($pfad_info == "ja" ? ' - ' . $link : '') . '</var>' : '') .
                        '</li>';
                  }
               }
            }
         }
      }

         // Doppelungen in den Suchergebnissen entfernen. (Wenn fehlerhaft untereinander liegende Verzeichnisse angegeben werden.)
         $suchergebnisse = array_unique($suchergebnisse);
         if (count($suchergebnisse) != $gefunden){
             $gefunden = count($suchergebnisse);
         }

         // Ergebnisse nach Anzahl der Treffer oder der letzten Dateiänderung sortieren
         krsort($suchergebnisse);
         $suchergebnisse = implode($suchergebnisse);

         // Ergebnis der Suche speichern
         if ($sucheingabe_speichern == "ja") {
            $fh = fopen($suchdatei, "a+");
            fputs($fh, date("d.m.Y H:i") . '|' . htmlspecialchars($_GET["suchbegriff"], ENT_HTML5, 'UTF-8') .  '|' . $gefunden . "\n");
            fclose($fh);
         }

         // Keine oder nur eine Übereinstimmung gefunden
         if ($gefunden == 0) {
   echo '<p>Es wurden keine Übereinstimmungen bei der Suche nach <i>' . htmlspecialchars($_GET["suchbegriff"], ENT_HTML5, 'UTF-8') . '</i> gefunden.</p>';
            // Tipps anzeigen
            if ($tipps_anzeigen == "ja") {
               echo '<p>Tipp: Beachten Sie die Rechtschreibung';
               if (strtolower($_GET["suchbegriff"]) != $_GET["suchbegriff"]) {
                  echo ', verwenden Sie nur Kleinbuchstaben';
               }
               if (
                  isset($pregCount) &&
                  $pregCount > 1
               ) {
                  echo ' oder verwenden Sie einen einzelnen Suchbegriff';
               }
               echo '!</p>';
            }
         } else {
            // Automatische Weiterleitung bei einer Übereinstimmung
            if (
               $auto_weiterleitung == "ja" &&
               $gefunden == 1
            )
            {
               $meta_tags = get_meta_tags($hyperlink);
                  if (isset($meta_tags['description'])) {
                  $beschreibung = $meta_tags['description'];
                  }
               exit('<p>Es wurde '. $gefunden . ' Datei bei der Suche nach <i> ' . htmlspecialchars($_GET["suchbegriff"], ENT_HTML5, 'UTF-8') . '</i> gefunden.</p>
               <p>Die Datei wird in 5 Sekunden automatisch geladen...<br>
               <a href="' . $hyperlink . ($treffer_hervorheben == "ja" ? '#:~:text=' . $_GET["suchbegriff"] : '') . '" target="' . $target . '">' . $link . '</a><br><small><samp>&hellip; ' . $beschreibung . ' &hellip;</samp></small><meta http-equiv="refresh" content="50; URL=' . $hyperlink . ($treffer_hervorheben == "ja" ? '#:~:text=' . $_GET["suchbegriff"] : '') . '">');
            }

            // Ausgabe der Suchergebnisse
   echo '<p>Es ' . ($gefunden == 1 ? 'wurde '. $gefunden . ' Datei' : 'wurden ' . $gefunden . ' Dateien') . ' bei der Suche nach <i>' . htmlspecialchars($_GET["suchbegriff"], ENT_HTML5, 'UTF-8') . '</i> gefunden.</p>' . 
               '<ol>' . $suchergebnisse . '</ol>';
         }

         // Datei-Info anzeigen
         if ($status_info == "ja") {
            printf('<p>In %.2f Sekunden ' . (count($directories) == 1 ? 'wurde '. count($directories) . ' Verzeichnis mit ' : 'wurden ' . count($directories) . ' Verzeichnisse mit ') . $anzahl_dateien . ($anzahl_dateien == 1 ? ' Datei ' : ' Dateien ') . 'durchsucht.</p>', microtime(true) - $startzeit);
         }
      }

      // Länge des Suchbegriffs zu kurz/zu lang
      else {
         echo '<p>Es sind ' . (mb_strlen($_GET["suchbegriff"]) < $suchbegriff_min ?
            'mindestens ' . $suchbegriff_min . ' Zeichen nötig' :
            'maximal ' . $suchbegriff_max . ' Zeichen erlaubt') . '!</p>';
      }
   }
   ?>

</aside>
</body>
</html>
Das "Zitat des Augenblicks" gibt es nur auf
http://schabau.eu
Meine "Merkzettel"
http://helpdesk.schabau.eu
Thiemo1991
Mitglied (Level 3)
Mitglied (Level 3)
Beiträge: 24
Registriert: Fr 25. Nov 2022, 15:54

Re: Suchscript von Werner

Ungelesener Beitrag von Thiemo1991 »

Ich finde das auch schade, dass Werner Zenk seine Website eingestellt hat. Hat irgendwer die Dateien noch von seiner Suchmaschine (die ohne DB ist)? Ich möchte auf meiner Website sowie für meine App die Suchmaschine haben.
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5743
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Suchscript von Werner

Ungelesener Beitrag von Tommy Herrmann »

Moin Thiemo,

... und willkommen bei uns im Forum :hallo:

Gucke mal hier in meinem "Download Archiv" (#22) > "Kleine Suchmaschine":

https://www.mobirise-tutorials.com/Download-Archiv/
Thiemo1991
Mitglied (Level 3)
Mitglied (Level 3)
Beiträge: 24
Registriert: Fr 25. Nov 2022, 15:54

Re: Suchscript von Werner

Ungelesener Beitrag von Thiemo1991 »

Ich bedanke mich für den Link dazu.

Wie muss die Textdatei aussehen, dass die Suchmaschine auch etwas finden kann? Ich weiß nur noch, dass ich das mit der Textdatei nie wirklich verstanden habe
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5743
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Suchscript von Werner

Ungelesener Beitrag von Tommy Herrmann »

Was für eine Textdatei?

Das ist doch ein reines PHP-Skript, Du kannst dort alle Seiten eintragen, die durchsucht werden sollen. Hier ein Beispiel dieser Anwendung auf meiner Seite:

https://www.mobirise-tutorials.com/Suchen.php

Trage z.B. zum Suchen mal Lightbox oder Local Fonts ein oder was auch immer.

Du findest auch einen Link zu meinem alten Tutorial für die Software "NetObjectsFusion", da ich noch kein Tutorial für Mobirise geschrieben habe, denn der Einbau ist gleich.
Thiemo1991
Mitglied (Level 3)
Mitglied (Level 3)
Beiträge: 24
Registriert: Fr 25. Nov 2022, 15:54

Re: Suchscript von Werner

Ungelesener Beitrag von Thiemo1991 »

Die Textdatei soll ja als DB dienen. Diese Datei muss ja irgendwie mit Daten gefüttert werden, sodass ja das ja als Suchbegriff verwendet werden kann. Ich weiß nicht wie die Textdatei als DB aussehen muss, so dass auch funktionieren kann.
schabau
Mitglied (Level 5)
Mitglied (Level 5)
Beiträge: 43
Registriert: Do 25. Aug 2022, 13:24
Wohnort: Cottbus
Kontaktdaten:

Re: Suchscript von Werner

Ungelesener Beitrag von schabau »

Dieses Suchskript verwendet keine Datenbank. Die zu durchsuchenden Dateien werden geöffnet und der Suchbegriff in deren Inhalt gesucht. Das aber nur bei Dateien, die man normal per Editor lesen kann. (htm, html, php, txt) Dateien wie *pdf und co. werden nicht geöffnet, dort wird nur im Dateinamen gesucht.
Das "Zitat des Augenblicks" gibt es nur auf
http://schabau.eu
Meine "Merkzettel"
http://helpdesk.schabau.eu
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5743
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Suchscript von Werner

Ungelesener Beitrag von Tommy Herrmann »

... sorry - ich habe keine Ahnung welche Textdatei Du meinst. Kannst Du das mal näher beschrieben oder benennen ...

Im Download befindet sich die Datei:

kleine_suchmaschine.php

Die verwendest Du.
Thiemo1991
Mitglied (Level 3)
Mitglied (Level 3)
Beiträge: 24
Registriert: Fr 25. Nov 2022, 15:54

Re: Suchscript von Werner

Ungelesener Beitrag von Thiemo1991 »

Code: Alles auswählen

/* Name der Datei in der die Sucheingaben gespeichert werden.
      Diese Datei wird beim ersten Eintrag autom. erzeugt! */
   $suchdatei = "suchbegriffe.txt"; // suchbegriffe.txt
schabau
Mitglied (Level 5)
Mitglied (Level 5)
Beiträge: 43
Registriert: Do 25. Aug 2022, 13:24
Wohnort: Cottbus
Kontaktdaten:

Re: Suchscript von Werner

Ungelesener Beitrag von schabau »

Die Datei suchbegriffe.txt ist etwas anderes. Die kannst du aktivieren oder es auch lassen. In dieser Datei kannst Du lesen, welche Suchbegriffe auf deiner Seite eingegeben wurden. Die erstellt das Script selbst.

Viele Grüße
Detlef Paschke
Das "Zitat des Augenblicks" gibt es nur auf
http://schabau.eu
Meine "Merkzettel"
http://helpdesk.schabau.eu
Thiemo1991
Mitglied (Level 3)
Mitglied (Level 3)
Beiträge: 24
Registriert: Fr 25. Nov 2022, 15:54

Re: Suchscript von Werner

Ungelesener Beitrag von Thiemo1991 »

Ach so!

kann ich die Suchbegriffe ganz einfach also in eine andere Datei schreiben und die wird dann auch dann ausgelesen?
schabau
Mitglied (Level 5)
Mitglied (Level 5)
Beiträge: 43
Registriert: Do 25. Aug 2022, 13:24
Wohnort: Cottbus
Kontaktdaten:

Re: Suchscript von Werner

Ungelesener Beitrag von schabau »

Wenn ich es recht verstanden habe, suchst Du doch ein Suchscript für deine Webseite.? Da wird in den einzelnen Dateien gesucht, da muss nix extra erstellt werden.
Das "Zitat des Augenblicks" gibt es nur auf
http://schabau.eu
Meine "Merkzettel"
http://helpdesk.schabau.eu
schabau
Mitglied (Level 5)
Mitglied (Level 5)
Beiträge: 43
Registriert: Do 25. Aug 2022, 13:24
Wohnort: Cottbus
Kontaktdaten:

Re: Suchscript von Werner

Ungelesener Beitrag von schabau »

schabau hat geschrieben: Fr 25. Nov 2022, 19:12 Die Datei suchbegriffe.txt ist etwas anderes. Die kannst du aktivieren oder es auch lassen.
Ist auch lustig, nur so am Rande. Genau an der Stelle habe ich vor ein paar Tagen noch Veränderungen gemacht. In der Datei werden jetzt auch die IP und wenn möglich der Hostnamen des Suchenden gespeichert. So lässt sich erkennen, ob mehrere verschiedene Suchen vom selben Benutzer ausgeführt wurden.

Viele Grüße
Detlef Paschke
Das "Zitat des Augenblicks" gibt es nur auf
http://schabau.eu
Meine "Merkzettel"
http://helpdesk.schabau.eu
Thiemo1991
Mitglied (Level 3)
Mitglied (Level 3)
Beiträge: 24
Registriert: Fr 25. Nov 2022, 15:54

Re: Suchscript von Werner

Ungelesener Beitrag von Thiemo1991 »

Könnt ihr mir bitte das wie bei euch es aussieht, schicken?
schabau
Mitglied (Level 5)
Mitglied (Level 5)
Beiträge: 43
Registriert: Do 25. Aug 2022, 13:24
Wohnort: Cottbus
Kontaktdaten:

Re: Suchscript von Werner

Ungelesener Beitrag von schabau »

Was meinst Du jetzt? Ein Bild, wie die Suche bei mir aussieht?

Schau und probieren gern hier: https://helpdesk.schabau.eu

Das ist die von mir etwas veränderte Version, die ich hier - ein Stück weiter oben - vor ein paar Monaten für alle eingestellt hatte.

Viele Grüße
Detlef Paschke
Das "Zitat des Augenblicks" gibt es nur auf
http://schabau.eu
Meine "Merkzettel"
http://helpdesk.schabau.eu
Thiemo1991
Mitglied (Level 3)
Mitglied (Level 3)
Beiträge: 24
Registriert: Fr 25. Nov 2022, 15:54

Re: Suchscript von Werner

Ungelesener Beitrag von Thiemo1991 »

Îch meinte, die Daten, wo ich dann das gleich sehen kann, wie es gemacht werden muss.
Antworten

Wer ist online?

Mitglieder in diesem Forum: Ahrefs [Bot] und 9 Gäste