PHP / Tipps / Kleine Suchmaschine

von: Werner Zenk

Viele Webmaster haben mich nach einer einfachen Suchmaschine
für Ihre Website gefragt, hier stelle ich Ihnen nun eine vor.

Diese Suchmaschine durchsucht das aktuelle Verzeichnis und/oder
andere Verzeichnisse. Gefundene Suchbegriffe werden farblich hervorgehoben.
Neu

 

Suchmaschine anzeigen

 

Quelltext:Kleine Suchmaschine
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
<!DOCTYPE html>
<html>
 <head>
  <title>Kleine Suchmaschine</title>

<style type="text/css">
body {
 font-family: Verdana, Arial, Sans-Serif;
 font-size: 13px;
}

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

var { /* Datei-Info */
 color: #00AF00;
 font-size: 11px;
}
</style>


 </head>
<body>

<?php
/* 
 Kleine Suchmaschine - Version vom: 26.03.2012 - Homepage-Total.de
 Diese Suchmaschine durchsucht die angegebenen Verzeichnisse 
 und die darin enthaltenen Dateien nach einem Suchbegriff!
*/

/* Die zu durchsuchenden Verzeichnisse eintragen.
 Aktuelles Verzeichnis durchsuchen mit  "./"   */
$verzeichnisse = array(
"verzeichnis1/",
"verzeichnis2/",
"verzeichnis3/",
);

/* Die Dateiendungen der Dateien die gefunden werden sollen.
Dateiendungen mit Großbuchstaben müssen extra eingetragen werden. */
$dateiendungen = array(
".gif",
".htm",
".html",
".jpg",
".mp3",
".pdf",
".php",
".png",
".txt",
".zip",
);

/* Die Dateiendungen der Dateien die von der oberen Liste "keine"
 Textdateien sind (es wird nur der Dateiname angezeigt) */
$_dateiendungen = array(
".gif",
".jpg",
".mp3",
".pdf",
".png",
".zip",
);

/* Vorzeichen bei Dateien die nicht durchsucht werden
 sollen zum Beispiel: _intern.htm,  _log.php,  _data.txt */
$vorzeichen "_";

/* Einzelne Dateien die nicht durchsucht werden sollen */
$nicht_durchsuchen = array(
"suchmaschine.php",
"login.htm",
);

/* Länge des Suchbegriffs (mindestens 3 Zeichen) */
$suchbegriff_min 3;

/* Anzahl der durchsuchten Verzeichnisse und Dateien anzeigen (ja/nein) */
$anzahl_dateien "ja";

/* Maximale Anzeige (Begrenzung) der Suchergebnisse */
$suchergebnisse_max 25;

/* Sucheingaben speichern (ja/nein) */
$speichern "nein";

/* Name der Datei in der die Sucheingaben gespeichert werden */
$suchdatei "suchbegriffe.txt"// Benötigt Schreibrechte!

/* Automatische Weiterleitung wenn nur eine Datei gefunden wird (ja/nein) */
$autolink "ja";

/* Unerwünschte Sucheingaben von der Suche ausschließen */
$ausschluss = array(
"Demotext",
"Demotext2",
);

/* Länge des angezeigten Textausschnitts */
$textausschnitt 50;

/* META-Tags, wenn diese vorhanden sind, anzeigen (ja/nein) */
$metatags "nein";

/* URL (Optional) Bsp.: www.demosei.de/ */
$url "";


echo 
'<form method="post" action="' $_SERVER["SCRIPT_NAME"] . '">
 <input type="text" name="suchbegriff" value="' 
.
 (isset(
$_POST["suchbegriff"]) ? $_POST["suchbegriff"] : '') .
 
'" size="35" maxlength="40" required="required">
 <input type="submit" name="suche" value="suchen">
</form>
'
;

$gefunden $dateinr 0$ausgabe $link "";
$startzeit microtime(true);

if (isset(
$_POST["suche"]) || isset($_POST["suchbegriff"])) {
 
$_POST["suchbegriff"] = (function_exists('str_ireplace') ? str_ireplace($ausschluss""$_POST["suchbegriff"]) : str_replace($ausschluss""$_POST["suchbegriff"]));
 if (
strlen(trim($_POST["suchbegriff"])) >$suchbegriff_min) {
  foreach (
$verzeichnisse as $verzeichnis) {
   foreach (
$dateiendungen as $dateiendung) {
    foreach (
glob($verzeichnis "*" $dateiendung) as $datei) {
     
$dateiname basename($datei);
     if (
$dateiname[0] != $vorzeichen && !in_array($dateiname$nicht_durchsuchen)) {
      
$text = (!in_array($dateiendung$_dateiendungen)) ? file_get_contents($datei) : substr(strtoupper($dateiendung), 1) . '-Datei';
      
preg_match("/<title>(.*?)</i"$text$t);
      
$titel = isset($t[1]) ? $t[1] : $dateiname;
      unset(
$t[1]); $dateinr++;
      
$meta = ($metatags == "ja" && count(get_meta_tags($datei)) > 0) ? '<br>' implode('<br>'get_meta_tags($datei)) : "";
      
$text strtr(strip_tags($text), array("&auml;"=>"ä""&ouml;"=>"ö""&uuml;"=>"ü""&Auml;"=>"Ä""&Ouml;"=>"Ö""&Uuml;"=>"Ü""&szlig;"=>"ß""\r" =>" ""\n" =>" ""\t" =>" ""  " =>" "));
      
$_POST["suchbegriff"] = trim($_POST["suchbegriff"]);
      if ((
strstr($text$_POST["suchbegriff"]) or stristr($text$_POST["suchbegriff"]) or stristr($dateiname$_POST["suchbegriff"])) && $gefunden <$suchergebnisse_max) {
       
$gefunden++; $link $datei;
       
$textteil substr($text, (strpos($text$_POST["suchbegriff"]) - $textausschnitt), (strlen($_POST["suchbegriff"]) + ($textausschnitt 2)));
       
$ausgabe .= '<p>' $gefunden '<a href="' $datei '">' $titel '</a> <small>(' substr_count(strtolower($text), strtolower($_POST["suchbegriff"])) . 'x)</small>' $meta '<br>&hellip; ' .
        
preg_replace('/(' $_POST["suchbegriff"] . ')/i''<acronym>$1</acronym>', (strlen($textteil< $textausschnitt substr($textstrpos($text$_POST["suchbegriff"]), $textausschnitt) : $textteil)) .
        
' &hellip;<br><var>Stand: ' date("d.m.y h:i"filemtime($datei)) . ' - ' number_format((filesize($datei) / 1024), 2","".") . ' kb - ' $url $datei '</var></p>';
      }
     }
    }
   }
  }
  if (
$gefunden == 0) {
   echo 
'<p>Es wurden keine Übereinstimmungen mit dem eingegebenen Suchbegriff gefunden.</p>';
  }
  else {
   if (
$autolink == "ja" && $gefunden == 1) {
    echo 
'<script type="text/javascript">location.href="' $link '";</script>';
   }
   echo 
'<p>Es ' . ($gefunden == 'wurde '$gefunden ' Datei' 'wurden ' $gefunden ' Dateien') . ' gefunden:</p>' $ausgabe;
  }
  if (
$anzahl_dateien == "ja") {
   
printf('<p>Durchsuchte Verzeichnisse: ' count($verzeichnisse) . ' - Dateien: ' $dateinr ' (in %.2f Sekunden)</p>'microtime(true) - $startzeit);
  }
  if (
$speichern == "ja") {
   
$fp fopen($suchdatei"a+");
   
fputs($fpdate("d.m.y h:i") . '|' $_POST["suchbegriff"] .  '|' $gefunden "\n");
   
fclose($fp);
  }
 }
 else {
  echo 
'<p>Es sind mindestens ' $suchbegriff_min ' Zeichen nötig!</p>';
 }
}
?>

</body>
</html>

Einbau einer Auswahlliste für Verzeichnisse - Nur für Experten!
Bei einer großen Anzahl von Verzeichnissen die durchsucht werden soll, ist es sinnvoll
eine Auswahlliste zu haben um nur bestimmte Verzeichnisse zu durchsuchen.
Mit dieser Auswahlliste kann ein Verzeichnis oder mehrere Verzeichnisse ausgewählt werden.

PHP-Scriptteile zum einbauen in die Suchmaschine.
Beachtet werden muss hier die Reihenfolge der Verzeichnisse (sowohl im Array als auch in der Auswahlliste).
<?php
// ...

/* Die zu durchsuchenden Verzeichnisse eintragen.
 Aktuelles Verzeichnis durchsuchen mit  "./"   */ 
$verzeichnisse = array(
"texte/",
"daten/",
"archiv/",
);

// ...

echo '<form method="post" action="' $_SERVER["SCRIPT_NAME"] . '">
Suche: <input type="text" name="suchbegriff" value="' 
.
 (isset(
$_POST["suchbegriff"]) ? $_POST["suchbegriff"] : "") .
 
'" size="35" maxlength="40"> 
Verzeichnis:
<select name="auswahl[]" size="3" multiple="multiple">
 <option value="0" selected="selected"> Texte </option>
 <option value="1"> Daten </option>
 <option value="2"> Archiv </option>
</select>
 <input type="submit" name="suche" value="los">
</form>'
;

// ...

if (isset($_POST["suche"]) || isset($_POST["suchbegriff"])) {

$array = array();
foreach (
$_POST["auswahl"] as $element) {
 
$array[] = $verzeichnisse[$element];
}
$verzeichnisse $array;

// ...
?>


Falls nur eine einfache Auswahl möglich sein soll, verwenden Sie diese PHP-Scriptteile:
<?php
// ...

/* Die zu durchsuchenden Verzeichnisse eintragen.
 Aktuelles Verzeichnis durchsuchen mit  "./"   */ 
$verzeichnisse = array(
"texte/",
"daten/",
"archiv/",
);

// ...

echo '<form method="post" action="' $_SERVER["SCRIPT_NAME"] . '">
Suche: <input type="text" name="suchbegriff" value="' 
.
 (isset(
$_POST["suchbegriff"]) ? $_POST["suchbegriff"] : "") .
 
'" size="35" maxlength="40"> 
 Verzeichnis:
<select name="auswahl" size="1">
<option value="0" selected="selected">Texte</option>
<option value="1">Links</option>
<option value="2">Archiv</option>
</select>
 <input type="submit" name="suche" value="los">
</form>'
;

// ...

if (isset($_POST["suche"]) || isset($_POST["suchbegriff"])) {

$array = array();
$array[] = $verzeichnisse[$_POST["auswahl"]];
$verzeichnisse $array;

// ...
?>

 

Diskutieren Sie über die "Kleine Suchmaschine" im Forum der netzgemein.de
    Und Ihre Meinung?
      Sie vermissen auf dieser Seite wichtige Informationen oder haben Hinweise für uns?
Kommentare: 55 » aufmachen   
Mike:
Warum benutzt du bei den Dateiendungen nicht einfach: foreach (glob("daten/*{*.php,*.txt}", GLOB_BRACE)... ??

Werner:
Leider funktioniert "GLOB_BRACE" nicht auf jedem Server (z.B.: Solaris) deshalb musste ich als Ersatz eine foreach-Schleife einbauen.

Felix:
Bei mir klappt alles gut, nur steht immer nach der Suche:Warning: Invalid argument supplied for foreach() in /users/[Mein Benutzer/auch webseitenname]/www/suche.php on line 66Was mache ich Falsch?

Werner:
Wahrscheinlich hast du ein Verzeichnis falsch angegeben!

Dennis Six:
Hi,ich finde die Suchmaschine echt toll und benutze sie auch für meine Webseite. Nur habe ich noch eine kleine Frage: wie kann ich das anstellen die Groß- und Kleinschreibung zu deaktivieren?

Werner:
Ersetze strstr durch stristr . Allerdings wird dann das gesuchte Wort nicht mehr farbig hervorgehoben!

Yannick:
Die Suchmaschine ist genau das, was ich gesucht habe, leider habe ich dabei ein Problem. Ich inkludiere zum Beispiel in die datei "index.php" die Datei "index_text.html", aber die eigentliche Startseite "index.php" wird nicht unter den Treffern angezeigt. Ich hoffe du weißt was ich damit meine und kannst mir mit meinem Problem helfen.Gruß Yannick.

Werner:
Include-Dateien werden bei der Suche nicht eingebunden. Die Dateien können nur direkt ausgelesen werden.

Yannick:
OK, das Problem verstehe ich. Ich habe das Eingabefeld jetzt in meine Navigationsleiste eingebaut, aber wenn ich jetzt einen Suchbegriff eingebe, erscheinen die Ergebnisse auch in der Leiste. Ich möchte aber, dass sie in einer neuen Seite geöffnet werden. Wie kann ich das am Besten machen. Entschuldigung für die vielleicht dumme Frage. Gruß Yannick

Werner:
Viellicht hast du schon mal etwas vom Link-Attribut target="_blank" gehört, dieses öffnet ein neues Fenster oder einen Tab.
echo "<p>" . $gefunden . ". <a href=\"" . $datei . "\" target=\"_blank\">" . $titel . "</a> <small>(" . substr_count($text, $_POST["suchbegriff"]) . "x)</small><br>" .


Yannick:
Das kenn ich schon, hat mir bei meinem Problem aber nicht geholfen. Es sieht immer noch so aus, dass die Suchergebnisse in der Navigationsleiste angezeigt werden. Entschludigung für die nervigen Fragen.

Werner:
Welche Navigationsleiste, benutzt du etwa Frames?

Yannick:
Ne, Frames benutzte ich nicht. Die Navigationsleiste wird mit include eingefügt. Ich hab mal zwei Bilder gemacht um darzustellen, wie's bei mir aussieht - ...

Werner:
In der Navigationsleiste brauchst du nur ein Formular einzubauen (also nicht die Suchmaschine!):
<form method="post" action="kleine_suchmaschine.php">
 <input type="text" name="suchbegriff" size="35" maxlength="40">
 <input type="submit" name="suche" value="suchen">
</form>
Das Formular leitet die Suchanfrage dann an die Datei kleine_suchmaschine.php weiter.

Die Datei "kleine_suchmaschine.php" formatierst du dann genau so wie deine anderen Seiten auch!

Yannick:
Danke! Jetzt gehts. Hätt ich eigentlich auch selbst drauf kommen kommen, wenn ich mal überlegt hätte

Doreen:
Hallo Werner,genau so ein Script habe ich gesucht, danke dafür.Ist es allerdings auch möglich bestimmte DIV Tags innerhalb der zu durchsuchenden Seiten auszuschließen? Da manche wichtigen Suchbegriffe in meiner Navigation auftauchen bekomme ich dann auch alle Seiten angezeigt.

Werner:
Ich habe meine Navigation in einer externen Datei, diese wird mit include eingebunden. Damit die Navi nicht in den Suchergebnissen erscheint, hat diese das Vorzeichen "_" z.B.: "_navigation.php"

Monika:
Vielen Dank für das tolle Script! Ich habe lange gesucht und viel Unnützes gefunden, dieses jedoch hält was es verspricht!Viele Grüße und weiterhin viel Erfolg.

Philipp:
Super Suchmaschine, funktioniert einwandfrei im Firefox. Doch wenn ich die Seite per IE 8 aufrufe, funkioniert die suche nur wenn ich mit der Maus auf den Button klicke, nicht aber wenn ich die Enter-Taste betätige. An was kann das liegen?

Werner:
Es liegt mal wieder am IE dieser sendet den Button (value) nicht mit (warum auch immer!) Habe eine Lösung gefunden, ersetze:
if (isset($_POST["suche"])) {
durch:
if (isset($_POST["suche"]) || isset($_POST["suchbegriff"])) {


Philipp:
ja, super so funktioniert es auch Prima mit dem IE. Danke für die prompte Antwort.

Manfred:
Hallo,ich finde Ihre Suchmaschine sehr gelungen. Manchmal sind die Zielseiten doch etwas lang. Sehen Sie die Möglichkeit auf "einfache" Weise den Suchbegriff auf der Zielseite auch zu markieren (ähnlich, wie auf der Ergebnisseite "kleine Suchmaschine")?

Werner:
» Text suchen und markieren mit JavaScript

Riko:
ich habe folgennes problem, wenn ich was ins suchfeld eingebe und suche erscheint folgende nachicht Warning: Invalid argument supplied for foreach() in /usr/export/www/vhosts/funnetwork/hosting/rikokeil/kleine_suchmaschine.php on line 75

Werner:
Welche Verzeichnisse hast du ab Zeile 34 denn eingetragen?

Colossos:
Vielen Dank für die kurze aber effiziente Suchmaschine.Ich habe da aber doch ein Problem: Obwohl ich als Textausschnitt 60 Zeichen eingestellt habe, bekomme ich nur: […] […] ausgegeben. Bei jedem Suchergebnis. Woran kann das liegen?

Werner:
Ich habe die Suchmaschine angepasst, der Suchbegriff wird jetzt auch am Anfang des Textausschnitts markiert und der Textausschnitt hat jetzt immer mindestens 60 Zeichen (je nach Vorgabe).

Michael:
Hallo, leider erhalte ich vom Server die Fehlermeldung "Fatal error: Call to undefined function: str_ireplace() in..." Kann mit ggf. jemand einen Tipp geben woran das liegt? Danke und Grüße Michael

Werner:
Dein Webserver unterstüzt kein PHP 5. Ersetze str_ireplace durch str_replace

Michael:
Hallo, vielen Dank! Die Suchmaschnine funktioniert nun echt super.

Mike:
Die Suche nach Dateinamen ist zwar nützlich, aber wie kann ich dieses verhindern?

Werner:
Lösche einfach folgenden PHP-Code:
or stristr($dateiname, $_POST["suchbegriff"])


Mike:
Ok, das funktioniert. Nun habe ich in manchen Textauschnitten &lt; oder &gt; drin (weil ich das so in manchen Seiten verwende). Wie kann ich das durch <   > - Html-Klammern ersetzen?

Werner:
Ersetze folgenden PHP-Code:
$text = strtr(strip_tags($text),
durch:
$text = strtr(htmlspecialchars_decode(strip_tags($text)),


Mike:
Wie kann ich die Reihenfolge der Suchergebnisse beeinflussen?

Werner:
Indem du die Reihenfolge der Verzeichnisse entsprechend anpasst.

equinoxx:
WOW! Das Teil nenne ich mal gelungen @Werner! RESPEKT! Leicht verständlich ist das Script auch! Derzeit suche ich noch den / die Fehler, warum meine eigenen SuMa-Scripte nicht funktionierten. Vielen dank und weiter so auch im neuen Jahr! Gruß Thomas

schicki:
Hallo Werner! Die Suchfunktion funktioniert bestens. Nachdem ich jedoch, wie einer meiner Vorredner, einige Dateien per include eingebunden habe, dachte ich daran, die meta-daten (keywords) auch durchsuchen zu lassen und so für jede Seite Suchbegriffe vorzudefinieren. Könntest du mir bitte helfen, wie ich den Code anpassen muss? DANKE!

Dominik:
Die Suchmaschine ist toll!

Jeff:
Ich habe absolut keinen blassen Schimmer von php. Habe mir nur etwas HTML angeeignet. Da wollte ich nur vorweg sagen.Doch wollte ich auf meiner HP eine Suchfunktion einbinden. Habe den Quelltext kopiert und eingefügt. Aber ich komme auf keinen grünen Zweig.Muss ich die Datei dann als .php abspeichern?

Werner:
Ja, die Datei muss die Dateiendung .php haben, außerdem muss der Webserver auf dem deine Homepage steht PHP unterstützen.

Jeff:
OK, Danke schonmal Werner. Mein Server unterstützt php und ich kann die Seite aufrufen.Gibt es denn eine Möglichkeit, diese Suche in ein Div auf einer html-Seite einzubinden?

Werner:
Du kannst die Suche in ein iFrame einbauen. In einen DIV geht das nur über JavaScript (Ajax). Aber wozu denn eigentlich irgendwo einbauen? Die "Suche"-Seite ist nichts anderes als eine HTML-Seite mit etwas PHP darin.

Jeff:
Ich hab es über ein Formular eingebaut und es schaut so aus als ob es soweit funktioniert.Die meisten Webseiten haben doch so eine Suchfunktion direkt auf der Startseite eingebunden.Vielleicht hilft dir meine Adresse: www.sg-handwerk.de/versuch/index.html Bei vergleichbaren Homepages öffnet sich nach der Eingabe des Suchbegriffes dann im mittleren div eine Ergebnisliste.

ede:
hallo werner, zu utf-8: ich habe $_POST["suchbegriff"] = htmlentities($_POST["suchbegriff"],ENT_QUOTES,"UTF-8"); eingefügt und jetzt kann ich mit umlauten suchen.im array habe ich die umwandlung gelöscht. Es funktioniert sehr gut.jetzt noch die speicherung in der suchdatei und es ist perfekt. Noch einmal vielen dank für das tolle script ich habe wieder etwas gelernt.

ede:
Es werden keine Überschriften "<h1>" gefunden. Kann man das noch einbauen?

Werner:
Es wird jeder Text gefunden auch Text in Überschriften. Vielleicht wolltest du aber die Überschrift (h1) in den Suchergebnissen mit ausgeben lassen. Baue folgendes nach unset($t[1]); $dateinr++; ein (ohne die PHP-Tags) :
<?php
preg_match
("/<h1>(.*?)</i"$text$h);
$heading = isset($h[1]) ? '<b>' $h[1] . '</b><br>' '';
unset(
$h[1]);
?>
$heading dann einbauen bei:
. 'x)</small><br>' . $heading . 


Rene:
Danke für deine Suchmaschine, das Script läuft super! Eine Frage noch, ich habe im Titel-Tag eine php-Variable stehen, die ich aus einer anderen Datei per include einbinde. Das Suchscript erkennt diesen Titel nicht sodass er auch bei den Suchergebnissen nicht erscheint.

Werner:
Der PHP-Quellcode wird vom Server erst geparst wenn dieser vom Browser aufgerufen wird, das Suchscript durchsucht aber bereits den original Quellcode.

Frank:
Habe dieses Script zum zählen der Dateien

<?php 
$filecount
=0
$dir="xyzPolicen"
$dirh=opendir($dir); 
while(
$filename=readdir($dirh)) 

if(
$filename!="." && $filename!=".." && is_file($dir."/".$filename)) $filecount++; 

closedir($dirh); 

echo 
"Es befinden sich ".$filecount." Dateien im Ordner ".$dir
?>
Dieses Script zählt mehr Dateien als dieses von Euch

Werner:
Dann musste halt dein Script zum suchen nehmen
Es sollen auch nicht alle Dateien gefunden werden, sondern nur die mit einer bestimmten Dateiendung:
/* Die Dateiendungen der Dateien die gefunden werden sollen */ 
$dateiendungen = array( 
...
)
Dateiendungen mit Großbuchstaben müssen extra eingetragen werden.

Frank:
Hallo Werner! Vielen Dank für die schnelle Antwort. Es sind nur pdfs im Verzeichnis. Allerdings sind die Endungen mal pdf und mal PDF geschrieben. Habe nun PDF hinzugefügt. Es funzt. Homepage-Total.de ist eine wirklich gute Seite, besonders für Menschen wie mich. Hoffe, die bleibt noch lange online. Liebe Grüße, Frank

macmoldis:
Die kleine Suchmaschine ist das was ich gesucht habe, Danke, funktioniert jetzt auch so, wie ich es haben wollte.
Als erstes hatte ich den Eindruck, dass beim Erstellen von $textteil in Zeile 134 in dem Fall dass "strpos(..., $_POST["suchbegriff"]) - $textausschnitt)" einen negativen Betrag ergibt, der $textteil in der $ausgabe erst mit Beginn des Suchbegriffs angezeigt wird ... das hab ich versucht, in dem ich den Startwert, wenn kleiner als 0 so auf 0 setzte und so der $textteil von Beginn des Textes an angezeigt wird.
Als zweites, oder war das das erste, was mir auffiel, Groß- und Kleinschreibung bei strpos?
strpos macht da Unterschiede, richtig? ... und gibt so bei unterschiedlicher Schreibweise dann auch für substr auch keinen Startwert aus
Habe deswegen dann den Suchbegriff und den $text mit strtolower klein gemacht und mir so den Startwert für substr gesucht.
<?php

// Habe nun statt Zeile 134
// alt:
$textteil substr($text, (strpos($text$_POST["suchbegriff"]) - $textausschnitt), (strlen($_POST["suchbegriff"]) + ($textausschnitt 2)));
// *******
// neu:
$suche $_POST["suchbegriff"];
$suchekl strtolower($suche)
$textkl strtolower($text)
$start strpos($textkl$suchekl) - $textausschnitt;
if (
$start &lt;0) { $start 0; }
$ende strlen ($suche) + $textausschnitt *2;
$textteil substr($text$start$ende);
?>

Meine Eindrücke richtig oder hab ich vorher irgend etwas anderes vermehrt?
... und natürlich die Frage, ist der Lösungsanatz so in Ordnung ... klar funktioniert ja, nee wollt mal 'ne Fachmannmeinung dazu
Und noch ein drittes, weiter oben war die Frage nach dem Durchsuchen von include-Dateien. Ich hab das für mich so gelöst, das a) die include-Datei einen passenden Teil des Dateinames der anzuzeigenden Datei hat und b) daraus dann, aus dem Include-Dateinamen per substr den neuen (anzuzeigenden) Dateinamen(+Pfad) und den $titel gebastelt. Funktioniert auch ....
Danke und Grüße macmoldis

Werner:
Hallo, der negative Betrag von $textteil ist mir noch nicht aufgefallen -- Danke für den Hinweis.
Dein Lösungsanatz ist gut, ich werde die Suchmaschine demnächst mal überarbeiten.

Esther K.:
Ganz herzlichen Dank für die Suchfunktion in php, die ich nun in meine Webseite für chinesischen Kräuter einfügen konnte. So erspare ich mir die aufwendigen Inhaltsverzeichnisse, die auch zu umständlich sind.
Hilfe finden Sie im » netzgemein.de - Forum. Auch als „Gast” können Sie dort Fragen stellen!  
 Das könnte Sie interessieren:
Zeilenumbruch nach Zeichenanzahl  Mit PHP schreiben und lesen (9) - Rechnen mit PHP.  Counter - Ein einfacher Counter der die Seitenaufrufe zählt und in einer Datei speichert.  PHP-Einführung  Gerade oder ungerade Zahl ermitteln  Datei-Inhalt in ein Array einlesen  Text kontinuierlich mit einer for-Schleife zoomen  Datum der nächsten sieben Tage ausgeben  Schreibrechte überprüfen und ändern  PHP Bausteine 7  …mehr
© 2000-2012 Homepage-Total.de Kontakt - Impressum - Banner