Fallout: Interne PHP Suchmaschiene

Hallo, suche ein ganz simples php-script Suchmaschienenscript was die eigene Seite durchsucht.

Habe schon die "suchen" funktion genutzt, habe auch diverse sachen probiert, leider ohne erfolg..

Danke im Voraus

  1. Hi,

    ich würde ein script bauen welches mir ersteinmal meine ganzen files einliest mit dir() und mit einer schleife jede einzelene datei mit file() einlesen und mit eregi() das suchwort suchen und pro treffer ausgeben in welcher datei er es gefunden hat.

    also deine freunde sind:

    • dir()
    • file()
    • eregi()

    MfG
    Andy

    1. Hallo, danke erstmal für deine Antwort, gibts da nichts fertiges?
      Kenn mich noch nicht so gut aus in PHP.

      Könntest du mir den code posten, kann ihn mir dann erweitern bzw anpassen.

      Mit freundlichen Grüßen Fallout

  2. Hallo,

    ich habe in meine Seite http::/MailAktiv.de den kostenlosen Indexdienst http://www.crawl-it.de eingebunden. Die sind schnell und kaum Werbung. Eventuell reicht dir das ja.

    Grüße, Rainer Rosenberger

  3. Hi!
    Ich hab ein Script auf netpulse.ch gefunden:

    <?

    /* easySearch.php
       --------------

    einfache suchmaschine für "kleine" webSites (< 50 seiten)

    autor: martin stolz, future@netpulse.ch, 25.2.2001

    installation:

    1. die zu durchsuchenden verzeichnisse im array '$aPath' ergänzen.
       2. die zu durchsuchenden dateitypen im array '$aExtension' ergänzen.
       3. in '$sLinkAttrib' können für die angezeigten links weitere parameter für
          den <a> tag definiert werden: z.b. class=...  target=...  etc.
       4. bei bedarf kann der html-teil (am ende DIESER seite) noch angepasst werden.
       5. das textfeld im suchformular muss den namen 'search' haben:

    <form action='easySearch.php'>
             <input type='text' name='search'>
          <input type='submit'>
         </form>

    */

    // ***** konfigurierbare parameter *****

    $aPath     = array ('./de','/allgemein' );   // welche verzeichnisse sollen durchsucht werden
    $aExtension  = array ( '.php' ); // welche dateitypen sollen durchsucht werden
    $sLinkAttrib = 'class=myStyle';         // zusätzliche attribute für die links

    // ***** ende konfiguration *****

    $sUL = '';

    // search file
    function searchFile($sPath) {

    global $sUL;
     global $search;
     global $sLinkAttrib;

    $sFile = strip_tags(join('',file($sPath)),'<title>,<meta>');
     if (stristr($sFile, $search)) {
      eregi('(<title>)([^<]+)', $sFile, $aParts);
      if ($aParts[2]) {
       $sUL .= "<li><a href='".$sPath."' ".$sLinkAttrib.">".$aParts[2]."</a>\n";
      }
      else {
       $sUL .= "<li><a href='".$sPath."' ".$sLinkAttrib.">".basename($sPath)."</a>\n";
      }
     }
    }

    // scan directory
    function scanDir($sDir) {

    global $aExtension;

    // create dir object
     $oDir = dir($sDir);

    // loop over all files
     while ($sEntry = $oDir->read()) {
      $sPath = $sDir.'/'.$sEntry;
      if (! is_dir($sPath)) {
       reset ($aExtension);
       while (list($sKey, $sExt) = each($aExtension)) {
        if (strtolower(substr($sPath, -1 * strlen($sExt)) == strtolower($sExt))) {
         searchFile($sPath);
        }
       }
      }
     }
     $oDir->close();
    }

    // suchbegriff vorhanden ?
    if (isset($search) and (trim($search) != '')) {

    // scan all directories
     while (list($sKey, $sName) = each ($aPath)) {
      scanDir($sName);
     }
    }

    ?>

    <html>

    <head>
      <title></title>

    <style>
       .myStyle {
        font-family : Verdana, Arial, sans-serif;
        font-size : 12px;
        color : Black;
        text-decoration : none;
       }
       .myStyle:visited {
        color : Black;
       }
       .myStyle:hover {
        color : Red;
       }
      </style>

    </head>

    <body class="myStyle">

    <?  if ($sUL != '') { ?>

    Der Suchbegriff <b>"<?= $search ?>"</b> wurde in folgenden Seiten gefunden:

    <ul>
         <?= $sUL ?>
       </ul>

    <?  }
        elseif (isset($search) and ($search != '')) { ?>

    Der Suchbegriff <b>"<?= $search ?>"</b> wurde nicht gefunden.
         <br>
         <br>

    <?  }
        else { ?>

    Geben sie bitte einen Suchbegriff ein.
         <br>
         <br>

    <? } ?>

    <hr size="1" noshade>
      <span style="font-family: Verdana, Arial, sans-serif; font-size: 10px; color: Gray;">
       results by <b>easySearch.php</b> © 2001 <b><a href="http://netpulse.ch" target="_blank">martin stolz, future@netpulse.ch</a></b>
      </span>

    </body>

    </html>

    1. Hallo Fabienne,

      habe das scriptmal ausprobiert. Hab den code in ne .php gepackt,
      habe dann unten im html teil

      <form action="<?php echo $PHP_SELF ?>" method="POST">
      <input type='text' name='search'>
      <input type='submit'>
      </form>

      eingefügt, das man dann die abfrage hat.
      Jetzt bekomm ich folgenden fehler.

      Warning: OpenDir: No such file or directory (errno 2) in /var/www/web1/html/seiten/artikel/new/easysearch.php on line 61

      Fatal error: Call to a member function on a non-object in /var/www/web1/html/seiten/artikel/new/easysearch.php on line 64

      Habe folgende zeile noch nicht angepasst. Wie mach ich das am besten?
      $aPath = array ('./de','/allgemein' );   // welche verzeichnisse sollen durchsucht werden

      Danke im Voraus

      1. Habe folgende zeile noch nicht angepasst. Wie mach ich das am besten?
        $aPath = array ('./de','/allgemein' );   // welche verzeichnisse

        Trage hier alle Verzeichnisse ein, die Du durchsuchen möchtest. Wenn Du mit "/" beginnst, wird direkt von deinem Home-Verzeichnis aus der Ordner durchsucht. Wenn Du mit "./" beginnst, wird nur von der aktuellen Position der easysearch.php-Datei gesucht.

        Beispiel:

        $aPath = array('/Verzeichnis/direkt/nach/home','./Verzeichnis/ab/hier','../../dasVerzeichnis/zwei/Ordner/hoeher');

        oder:

        $aPath = array('/');

        Jetzt sollten eigentlich alle Ordner durchsucht werden.

        1. Hallo Fabienne,

          welche php version braucht das script, bekomm immernoch
          den Fehler, bei mir ist die Version 4.1.2 noch installiert.

          Fehler:
          Warning: open_basedir restriction in effect. File is in wrong directory in /var/www/web1/html/seiten/car/new/easysearch.php on line 66

          Fatal error: Call to a member function on a non-object in /var/www/web1/html/seiten/car/new/easysearch.php on line 69

          MfG

          1. Das Script sollte normalerweise schon laufen. welche Version Du dafür benötigst, kann ich leider nicht sagen...

            Schau mal, ob das Verzeichnis bei Dir überhaupt angelegt ist. Du solltest da natürlich Verzeichnisse eintragen, die existieren. Zudem wäre es zum Testen nicht schlecht dort mal ne Datei reinzulegen und zu schauen, ob PHP die überhaupt findet.

            Greets

  4. Hallo!

    Hallo, suche ein ganz simples php-script SuchmaSCHINENscript was

    Sorry, hab' keins. Aber die Suchmaschine Google hilft. Allerdings sicher nur, wenn Du den Unterschied zw. Maschine und Eisenbahn-, U-Bahn, Franklin-Bahn-Schiene kennst.

    Viele Grüße aus Frankfurt/Main,
    Patrick

    1. Hab schon nach allem möglichen varianten gesucht, hab auch einiges gefunden, nur nichts passendes für mich, entweder ging das script nicht oder war zu umfangreich.

      MfG

  5. Schau mal auf

    http://www.planetc.de/download/planetsearch/planetsearch.html

    Die bieten ne kostenlose Suchmaschine auf php-basis zum Download an. Hab ich auch schon Versucht, ist ganz nett. Es wird sogar ein Logfile geschrieben, bei dem die gesuchten Worte in nem txt-File sortiert und gespeichert werden.

    Hoffe das hilft nochmals.

    Greets Fabe