kostenloser Webspace werbefrei: lima-city


suchmaschinenbau, mehrere begriffe auslesen

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    snottomo

    snottomo hat kostenlosen Webspace.

    hallo,

    habe mir vor einiger zeit eine suchmaschine gebaut.

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
     <head>
      <title>b-16-suche-script</title>
     </head>
    <body>
    
    <?php
    // Suchen und finden - Eine kleine Suchfunktion (2)
    $gefunden = "";
    // Wurden Daten über POST gesendet
    if ($_POST) {
     // Wurde ein Suchbegriff eingegeben
     if ($_POST["suchbegriff"] != "") {
     // Alle Dateien im akt. Verzeichnis mit der Dateiendung .html durchsuchen
      foreach (glob("*.html") as $dateiname) {
       $text = file_get_contents($dateiname); // Datei einlesen
       // Überprüfen ob der Suchbegriff im Text enthalten ist
       if (stristr($text, $_POST["suchbegriff"])) {
        // Link zu der Datei setzen
        $gefunden .= "<a href=\"$dateiname\">$dateiname</a><br>";
       }
      }
      // Suchergebnis anzeigen
      if ($gefunden != "") {
       echo "Gefundene Dateien die den Suchbegriff \"" . $_POST["suchbegriff"] . "\" enthalten : <br>";
       echo $gefunden . "<br>";
      }
      else {
       echo "Der Suchbegriff \"" . $_POST["suchbegriff"] . "\" wurde nicht gefunden!<br><br>";
      }
     }
    }
    
    // Formular anzeigen
    echo <<<EOT
    <form action="$_SERVER[SCRIPT_NAME]" method="post" target="_blank">
    Suchbegriff: <input type="text" name="suchbegriff"> 
    <input type="submit" value="suchen">
    </form>
    EOT;
    ?>
    </body>
    </html>


    http://www.snottomo.lima-city.de/verkaufsgalerie.html
    was muss ich am script aendern,
    um nur seiten anzeigen zu lassen,
    die bei meheren suchbegriffen
    auch nur die seiten anzeigen, welche diese suchbegriffe alle enthalten.
    zb. bauwagen, sachsen
    zur zeit kann ich nur einzelne suchbegriffe finden lassen.

    mit besten gruessen, snottomo

    nikic: [code] Tags hinzugefügt :)

    Beitrag zuletzt geändert: 2.5.2010 7:37:39 von nikic
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Du kannst den Suchbegriffstring in ein Array zerlegen, welches jeden eingegeben Suchbegriff enthält. Dann kannst Du nach diesen Begriffen suchen lassen und anschließend die jeweilige Seite ausgeben.

    z.B. so:

    $suchbegriffe = explode(" ",$_POST['suchbegriff']);
    unset($result);
    foreach($suchbegriffe as $begriff)
    {
       if(strpos($text,$begriff) != false) $result[] = true;
    }
    if(!in_array(false,$result)) $gefunden .= "<a href=\"$dateiname\">$dateiname</a><br>";


    Allerdings würde ich Dir empfehlen, das ganze auf eine Datenbankstruktur umzustellen. Dann müssen nicht immer alle Dateien durchsucht werden.
  4. Autor dieses Themas

    snottomo

    snottomo hat kostenlosen Webspace.

    rnitsche schrieb:
    Du kannst den Suchbegriffstring in ein Array zerlegen, welches jeden eingegeben Suchbegriff enthält. Dann kannst Du nach diesen Begriffen suchen lassen und anschließend die jeweilige Seite ausgeben.

    z.B. so:

    $suchbegriffe = explode(" ",$_POST['suchbegriff']);
    unset($result);
    foreach($suchbegriffe as $begriff)
    {
       if(strpos($text,$begriff) != false) $result[] = true;
    }
    if(!in_array(false,$result)) $gefunden .= "<a href=\"$dateiname\">$dateiname</a><br>";


    .....


    bekomme die veraenderung des scriptes nicht funktionsfaehig hin.
    weiss nicht, was ich loeschen muss und wo ich die neue weisung dafuer einbauen muss.
    kannst du meine vorlage komplettieren?:confused:
  5. Ich passe mal den Mittelteil an. Ist aber ungetestet. Bei Problemen sonst mal bitte die Fehlermeldung posten (gerne auch per PN)

    if ($_POST) {
     // Wurde ein Suchbegriff eingegeben
     if ($_POST["suchbegriff"] != "") {
     // Alle Dateien im akt. Verzeichnis mit der Dateiendung .html durchsuchen
      foreach (glob("*.html") as $dateiname) {
       $text = file_get_contents($dateiname); // Datei einlesen
       // Suchbegriff - String zerlegen (damit nach mehreren Wörtern gesucht werden kann. Trennzeichen ist das Leerzeichen)
      $suchbegriffe = explode(" ",$_POST['suchbegriff']);
       // Überprüfen ob alle angegebenen Suchbegriffe im Text enthalten ist
      unset($result);
      foreach($suchbegriffe as $begriff)
      {
        if(strpos($text,$begriff) != false) $result[] = true;
        else $result[] = false;
      }
        // wenn alle Begriffe vorkommen, Link zu der Datei setzen
      if(!in_array(false,$result)) $gefunden .= "<a href=\"$dateiname\">$dateiname</a><br>";
      }
      // Suchergebnis anzeigen
      if ($gefunden != "") {
       echo "Gefundene Dateien die den Suchbegriff \"" . $_POST["suchbegriff"] . "\" enthalten : <br>";
       echo $gefunden . "<br>";
      }
      else {
       echo "Der Suchbegriff \"" . $_POST["suchbegriff"] . "\" wurde nicht gefunden!<br><br>";
      }
     }
    }
  6. Autor dieses Themas

    snottomo

    snottomo hat kostenlosen Webspace.

    rnitsche schrieb:
    Ich passe mal den Mittelteil an. Ist aber ungetestet. Bei Problemen sonst mal bitte die Fehlermeldung posten (gerne auch per PN)

    .....



    schade, funktioniert noch nicht.

    angezeigt wird nach suchworteingabe
    eine seite mit folgendem inhalt:

    Parse error: syntax error, unexpected '[' in /home/webpages/lima-city/snottomo/html/anzeige/suche-script-b-16-d.php on line 18

    das script sieht momentan so aus;


    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <title>b-16-suche-script</title>
    </head>
    <body>
    $suchbegriffe = explode(" ",$_POST['suchbegriff']);
    unset($result);
    foreach($suchbegriffe as $begriff)
    {
    if(strpos($text,$begriff) != false) $result[] = true;
    }
    if(!in_array(false,$result)) $gefunden .= "<a href=\"$dateiname\">$dateiname</a><br>";
    <?php
    // Suchen und finden - Eine kleine Suchfunktion (2)
    $gefunden = "";
    // Wurden Daten über POST gesendet
    [code]
    if ($_POST) {
    // Wurde ein Suchbegriff eingegeben
    if ($_POST["suchbegriff"] != "") {
    // Alle Dateien im akt. Verzeichnis mit der Dateiendung .html durchsuchen
    foreach (glob("*.html") as $dateiname) {
    $text = file_get_contents($dateiname); // Datei einlesen
    // Suchbegriff - String zerlegen (damit nach mehreren Wörtern gesucht werden kann. Trennzeichen ist das Leerzeichen)
    $suchbegriffe = explode(" ",$_POST['suchbegriff']);
    // Überprüfen ob alle angegebenen Suchbegriffe im Text enthalten ist
    unset($result);
    foreach($suchbegriffe as $begriff)
    {
    if(strpos($text,$begriff) != false) $result[] = true;
    else $result[] = false;
    }
    // wenn alle Begriffe vorkommen, Link zu der Datei setzen
    if(!in_array(false,$result)) $gefunden .= "<a href=\"$dateiname\">$dateiname</a><br>";
    }
    // Suchergebnis anzeigen
    if ($gefunden != "") {
    echo "Gefundene Dateien die den Suchbegriff \"" . $_POST["suchbegriff"] . "\" enthalten : <br>";
    echo $gefunden . "<br>";
    }
    else {
    echo "Der Suchbegriff \"" . $_POST["suchbegriff"] . "\" wurde nicht gefunden!<br><br>";
    }
    }
    }
    // Formular anzeigen
    echo <<<EOT
    <form action="$_SERVER[SCRIPT_NAME]" method="post" target="_blank">
    Suchbegriff: <input type="text" name="suchbegriff">
    <input type="submit" value="suchen">
    </form>
    EOT;
    ?>

    </body>
    </html>





    Beitrag zuletzt geändert: 4.5.2010 4:16:08 von snottomo
  7. @snottomo
    ... schade, funktioniert noch nicht ...
    kein wunder. auf das nötige gekürzt und richtig eingerückt, dass auch minderbemittelte - wie meine wenigkeit - den sch...code lesen können [das lernt ihr nie, kommt mir vor!] (die suchbegriffe trenne ich mit '+' und nicht mit <space> [zeile 16]):
    <?php
    echo <<<EOT
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <title>b-16-suche-script</title>
      </head>
    
      <body>
    
    EOT;
    
    $suffix = ".php";
    if ( count ($_POST) ) {
      if ( isset ($_POST["suchbegriff"]) ) {
        $suchbegriffe = explode ("+",$_POST['suchbegriff']);
        $gefunden = null;
    
        foreach ( glob ("*$suffix") as $dateiname ) {
          $text = file_get_contents ($dateiname);
          $result = null;
          foreach ( $suchbegriffe as $begriff ) {
            #if ( strpos ($text, $begriff) != false ) $result[] = true;
            #else $result[] = false;
            if ( strpos ($text, $begriff) != false ) {
              $gefunden .= "<a href=\"$dateiname\" target=\"_blank\">$dateiname</a><br>\n";
            }
          }
        }
        // Suchergebnis anzeigen
        if ( $gefunden != "" ) {
          echo "Gefundene Dateien die den Suchbegriff \"{$_POST["suchbegriff"]}\" enthalten : <br />\n$gefunden<br />\n";
        } else {
          echo "Der Suchbegriff \"{$_POST["suchbegriff"]}\" wurde nicht gefunden!<br><br>\n";
        }
      }
    }
    
    // Formular anzeigen
    echo <<<EOT
        <form action="$_SERVER[SCRIPT_NAME]" method="post">
        Suchbegriff: <input type="text" name="suchbegriff">
        <input type="submit" value="suchen">
        </form>
      </body>
    </html>
    EOT;
    //highlight_file (__FILE__);
    ?>
    in der zeile 13 ist die dateiendung (für schlaue burschen 'suffix'), weil es möglich ist dass du nicht nur in html-dateien suchst ;o) [VORSICHT!! mit '.' <punctum> am anfang!!]

    Beitrag zuletzt geändert: 4.5.2010 10:04:09 von czibere
  8. Autor dieses Themas

    snottomo

    snottomo hat kostenlosen Webspace.

    czibere schrieb:
    @snottomo
    ... schade, funktioniert noch nicht ...
    kein wunder. auf das nötige gekürzt und richtig eingerückt, dass auch minderbemittelte - wie meine wenigkeit - den sch...code lesen können [das lernt ihr nie, kommt mir vor!] (die suchbegriffe trenne ich mit '+' und nicht mit <space> [zeile 16]):
    <?php
    echo <<<EOT
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <title>b-16-suche-script</title>
      </head>
    
      <body>
    
    EOT;
    
    $suffix = ".php";
    if ( count ($_POST) ) {
      if ( isset ($_POST["suchbegriff"]) ) {
        $suchbegriffe = explode ("+",$_POST['suchbegriff']);
        $gefunden = null;
    
        foreach ( glob ("*$suffix") as $dateiname ) {
          $text = file_get_contents ($dateiname);
          $result = null;
          foreach ( $suchbegriffe as $begriff ) {
            #if ( strpos ($text, $begriff) != false ) $result[] = true;
            #else $result[] = false;
            if ( strpos ($text, $begriff) != false ) {
              $gefunden .= "<a href=\"$dateiname\" target=\"_blank\">$dateiname</a><br>\n";
            }
          }
        }
        // Suchergebnis anzeigen
        if ( $gefunden != "" ) {
          echo "Gefundene Dateien die den Suchbegriff \"{$_POST["suchbegriff"]}\" enthalten : <br />\n$gefunden<br />\n";
        } else {
          echo "Der Suchbegriff \"{$_POST["suchbegriff"]}\" wurde nicht gefunden!<br><br>\n";
        }
      }
    }
    
    // Formular anzeigen
    echo <<<EOT
        <form action="$_SERVER[SCRIPT_NAME]" method="post">
        Suchbegriff: <input type="text" name="suchbegriff">
        <input type="submit" value="suchen">
        </form>
      </body>
    </html>
    EOT;
    //highlight_file (__FILE__);
    ?>
    in der zeile 13 ist die dateiendung (für schlaue burschen 'suffix'), weil es möglich ist dass du nicht nur in html-dateien suchst ;o) [VORSICHT!! mit '.' <punctum> am anfang!!]


    hallo

    habe das script unter
    http://snottomo.lima-city.de/anzeige/suche-script-b-16-e.php
    gespeichert
    dann ein formular gebaut

    <form action="http://snottomo.lima-city.de/anzeige/suche-script-b-16-e.php" method="post" target="_blank">
    snottomo-suchmaschine: <br>
    einfach suchbegriff eingeben <br>
    <input type="text" name="suchbegriff">
    <input type="submit" value="suchen">
    </form>

    dort begriff bauwagen
    eingegeben
    antwort

    Der Suchbegriff " bauwagen" wurde nicht gefunden!


    dann gebe ich
    bauwagen, hessen
    ein

    antwort
    Der Suchbegriff " bauwagen, hessen" wurde nicht gefunden!


    da mein ursprungs-script sehr gut funktioniert,
    aber eben nur mit einem suchbegriff.
    kann es so verkehrt nicht sein,
    muesste nur irgend wie leicht ergaenzt werden.

    weiss echt nicht, was ich falsch mache.
    koennen eure scripte befehle beinhalten,
    die mein ie6 nicht versteht?

    vieleicht faellt jemanden noch was ein dazu.

    mit besten gruessen,
    snottomo.
  9. @snottomo
    ... vieleicht faellt jemanden noch was ein dazu ...
    ja. in welchem ordner sind die files, die durchsucht werden?
    ==== edit ====
    und die suche geht so:
    1. "suchbegriff"
    2. "suchbegriff1+suchbegriff2+..."
    also die suchbegriffe sind nur durch '+' und sonst nichts getrennt. bei google kannst auch nicht so suchen wie du willst, sondern musst du regeln folgen.

    Beitrag zuletzt geändert: 5.5.2010 5:12:25 von czibere
  10. Autor dieses Themas

    snottomo

    snottomo hat kostenlosen Webspace.

    czibere schrieb:
    @snottomo
    ... vieleicht faellt jemanden noch was ein dazu ...
    ja. in welchem ordner sind die files, die durchsucht werden?
    ==== edit ====
    und die suche geht so:
    1. "suchbegriff"
    2. "suchbegriff1+suchbegriff2+..."
    also die suchbegriffe sind nur durch '+' und sonst nichts getrennt. bei google kannst auch nicht so suchen wie du willst, sondern musst du regeln folgen.


    die zu durchsuchenden dateien sind im selben, in dem das suchescript gelagert ist
    http://snottomo.lima-city.de/anzeige/
  11. @snottomo
    ... http://snottomo.lima-city.de/anzeige/
    so geht's auf lima: suchscript (in einer datei findet 'alpha', in der anderen 'beta', also kannst nach 'alpha+beta' suchen)
    und so sieht's aus: screenshot

    Beitrag zuletzt geändert: 5.5.2010 16:28:10 von czibere
  12. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!