suchmaschinenbau, mehrere begriffe auslesen
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
akt
anzeige
anzeigen
bauwagen
begriff
code
datei
dateiname
durchsuchen
gefunden dateiname
gefunden echo
gefundene dateien
http
suchbegriff
suche
suffix
text
url
zeile
zerlegen
-
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 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
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. -
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? -
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>"; } } }
-
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 -
@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]):
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!!]<?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__); ?>
Beitrag zuletzt geändert: 4.5.2010 10:04:09 von czibere -
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]):
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!!]<?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__); ?>
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.
-
@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 -
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/ -
@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 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage