OK, hier der Quellcode:
(ich lasse mal das rundrum weg, sonst ist es zu viel):
########### PHP-Suchmaschine ########### ########### powered by Viktor Widiker & http://www.widiker.de, Berlin 2002 ###########
########### Hier folgen die Einstellungen ###########
$max_suchwoerter=3; # Maximale Anzahl der Suchwörter, die wahrgenommen werden
$treffer_pro_seite=10; # Wie viele Treffer werden pro Ergebnisseite angezeigt?
$endungen=array("php3"); # Dateien mit welchen Endungen werden durchsucht?
$pfade_gesamt="germany/suche/"; # Adressen (relativ zum Suchmaschinennskript) der zu durchsuchenden Ordner (durch Kommata trennen!)
$max_stelle=200; # Maximale (ungefähre) Länge (in Zeichen) der ersten gefundenen Textstelle
$mehr_laenge=200; # Maximale (ungefähre) Länge (in Zeichen) des Strings für weitere Vorkommnisse
########### Ab hier folgt die Suche ####### if (!isset($grossschreibung)) { $grossschreibung=0; } if (!isset($ganzewoerter)) { $ganzewoerter=0; } if (!isset($index)) { $index=0; }
$suchtext=trim(stripslashes($suchtext)); if ($grossschreibung==0) { $suchtext=strtolower($suchtext); } $suchtext=ereg_replace(","," ",$suchtext); $suchtext2=array(); $suchwoerter=array(); $suchtext2=explode(" ",$suchtext); foreach ($suchtext2 as $einwort) { if (($einwort!="") && (count($suchwoerter)<=($max_suchwoerter-1)) && (!in_array($einwort,$suchwoerter))) { array_push($suchwoerter,$einwort); } } $suchtext=implode(" ",$suchwoerter); ?>
<form action="<? echo "$PHP_SELF"; ?>" method="post"> <TABLE width="600" cellpadding="5" cellspacing="0" border="0" align="left"> <tr> <td align="right" bgcolor="#C0C0C0"> <? echo "<input type="text" name="suchtext" size=""; $browser=$HTTP_USER_AGENT; if (1*strpos(strtolower($browser),"msie")>0) { echo "25"; } else { echo "14"; } echo "" value="".$suchtext.""><br><br>"; ?> <input type="submit" value="Suchen" style="border:1px solid #000000; background-color: #EEEEEE"> </td> <td bgcolor="#C0C0C0"> <b>Groß- und Kleinbuchstaben</b><br> <input type="radio" name="grossschreibung" value="1" <? if ($grossschreibung==1) echo "checked"; ?>>unterscheiden<br> <input type="radio" name="grossschreibung" value="0" <? if ($grossschreibung==0) echo "checked"; ?>>nicht unterscheiden </td> <td bgcolor="#C0C0C0"> <b>Art der Suche</b><br> <input type="radio" name="ganzewoerter" value="1" <? if ($ganzewoerter==1) echo "checked"; ?>>nur ganze Wörter<br> <input type="radio" name="ganzewoerter" value="0" <? if ($ganzewoerter==0) echo "checked"; ?>>Wortteile </td> </tr> </TABLE></form></td></tr><tr><td width="16%" valign="top"> <br><img src="/main/bzhgroup_suchen_de.jpg"><br><br>
<form action="/search.php" method="post"> <input type="text" name="suchtext" value=""><br> <input type="submit" value="Suchen" style="border:1px solid #000000; background-color: #EEEEEE"> </form> <a class=style1 href="/search.php">erweiterete Suche</a> <br><br><br><br><br> </td><td width="60%" valign="top">
<? if ($suchtext!="") { start(); ausgabe(); }
function start() { global $suchwoerter,$grossschreibung,$ganzewoerter,$dateinummer,$treffer,$max_stelle,$mehr_laenge; global $endungen,$pfade_gesamt; $dateinummer=0; $treffer=array(); $pfade=array(); $pfade=explode(",",$pfade_gesamt); foreach ($pfade as $pfad) { $ordner=opendir($pfad); while ($eintrag=readdir($ordner)) { $name=$pfad.$eintrag; $dateiname=explode(".",$eintrag); if (in_array($dateiname[1],$endungen)) { $anzahl=0; $schluss=0; $gefundene_woerter=array(); $datei=fopen($name,"r"); while (!feof($datei)) { $zeile=fgetss($datei,10000,""); if ($grossschreibung==0) { $zeile=strtolower($zeile); }
$woerter=explode(" ",$zeile); foreach ($woerter as $wort) { foreach ($suchwoerter as $suchwort) { ### ganze Wörter ### if ($ganzewoerter==0) { if (strstr($wort,$suchwort)) { if (!in_array($suchwort,$gefundene_woerter)) { array_push($gefundene_woerter,$suchwort); } $anzahl++; $treffer["vorkommnisse"][$dateinummer]++; if ($anzahl==1) { $treffer["datei_url"][$dateinummer]=$name;
$position=strpos($zeile,$wort); $wortlaenge=strlen($wort); $zeilenlaenge=strlen($zeile); if ($zeilenlaenge>$max_stelle) { $lside=$position-(($max_stelle-$wortlaenge)/2); $rside=$lside+$max_stelle; if ($lside<0) { $rside=$rside-$lside; $lside=0; } if ($rside>$zeilenlaenge) { $rside=$zeilenlaenge; } } else { $lside=0; $rside=$zeilenlaenge; } $stelle=substr($zeile,$lside,$rside-$lside); $stelle=ereg_replace($wort,"<span class="markierung">".$wort."</span>",$stelle); $stelle="...".$stelle."..."; $treffer["textstelle"][$dateinummer]=$stelle; } else if ($anzahl==2) { $teil=ereg_replace(",","",$teil); $mehr=$teil; } else if ($anzahl>2) { if (strlen($mehr)<$mehr_laenge) { if ($mehr=="") { $komma=""; } else { $komma=", "; } $wort=ereg_replace(", ","",$wort); $mehr.=$komma.$wort; } else { if ($schluss!=1) {$mehr=$mehr." ..."; $schluss=1;} } } } } ### ganze Wörter ENDE ### ### Wortteile ### else { if ($wort==$suchwort) { if (!in_array($suchwort,$gefundene_woerter)) { array_push($gefundene_woerter,$suchwort); } $anzahl++; $treffer["vorkommnisse"][$dateinummer]++; if ($anzahl==1) { $treffer["datei_url"][$dateinummer]=$name;
$position=strpos($zeile,$wort); $wortlaenge=strlen($wort); $zeilenlaenge=strlen($zeile); if ($zeilenlaenge>$max_stelle) { $lside=$position-(($max_stelle-$wortlaenge)/2); $rside=$lside+$max_stelle; if ($lside<0) { $rside=$rside-$lside; $lside=0; } if ($rside>$zeilenlaenge) { $rside=$zeilenlaenge; } } else { $lside=0; $rside=$zeilenlaenge; } $stelle=substr($zeile,$lside,$rside-$lside); $stelle=" ".$stelle." "; $stelle=ereg_replace(" ".$wort." "," <span class="markierung">".$wort."</span> ",$stelle); $stelle="...".$stelle."..."; $treffer["textstelle"][$dateinummer]=$stelle; } else if ($anzahl==2) { $teil=ereg_replace(",","",$teil); $mehr=$teil; } else if ($anzahl>2) { if (strlen($mehr)<$mehr_laenge) { if ($mehr=="") { $komma=""; } else { $komma=", "; } $wort=ereg_replace(", ","",$wort); $mehr.=$komma.$wort; } else { if ($schluss!=1) {$mehr=$mehr." ..."; $schluss=1;} } } } } ### Wortteile ENDE ### } } } fclose($datei); $treffer["woerter"][$dateinummer]=count($gefundene_woerter); $treffer["mehr"][$dateinummer]=$mehr; if (count($gefundene_woerter)>0) { $dateinummer++; } } } closedir($ordner); }
}
function ausgabe() { global $treffer,$dateinummer,$PHP_SELF,$index,$SERVER_NAME,$treffer_pro_seite,$suchwoerter,$suchtext,$grossschreibung,$ganzewoerter;
echo "<table width="600" cellpadding="5" cellspacing="0" border="0" align="left"><tr><td><table width="500" border="0" align="left"><tr><td>\n"; echo "<span style="font-size:13pt"><b>Ergebnisse der Suche:</b></span><br><br>\n"; $treffer_anzahl=count($treffer["datei_url"]); if ($treffer_anzahl==0) { echo "<span style="font-size:13pt"><b><br><br>Zu Ihrer Suche gibt es keine Treffer<br><br></b></span></td></tr></table>\n"; } else { @array_multisort($treffer["woerter"],SORT_DESC,$treffer["vorkommnisse"],SORT_DESC,$treffer["datei_url"],$treffer["textstelle"],$treffer["mehr"]); $suchtext=ereg_replace(" ",", ",$suchtext); if (count($suchwoerter)>1) { echo "Gesuchte Wörter: "; } else { echo "Gesuchtes Wort: "; } echo "$suchtext<br><br>\n"; $anfang=$index*$treffer_pro_seite+1; $ende=$anfang+$treffer_pro_seite-1; if ($ende>$treffer_anzahl) { $ende=$treffer_anzahl; } echo "<b>Treffer $anfang-$ende von insgesamt $treffer_anzahl Treffern, beste Treffer zuerst:<br><br>\n"; echo "</td></tr>\n";
for ($k=0;$k<$treffer_pro_seite;$k++) { $i=$index*$treffer_pro_seite+$k; $platz=$i+1; if ($platz<=$ende) { echo "<tr><td><table width="580" border="1" cellpadding="0" cellspacing="0" align="left">\n"; $t=1; $treffer["datei_url"][$i]=ereg_replace("./","",$treffer["datei_url"][$i]); $datei=fopen($treffer["datei_url"][$i],"r"); while ($t<7) { $zeile=fgetss($datei,1000,""); $zeile=trim($zeile); if ($zeile!="") { echo "<tr><td height="16" colspan="2">"; echo "<span class="t_nummer">".$platz.".</span> <a href="".$treffer["datei_url"][$i].""><b>".$zeile."</b></a>"; break; } $t++; } fclose($datei); if ($treffer["woerter"][$i]==1) { $woerter="Wort"; } else { $woerter="Wörter"; } if ($treffer["vorkommnisse"][$i]==1) { $vorkommnisse="Vorkommnis"; } else { $vorkommnisse="Vorkommnisse"; } echo "<p style="margin-top:0pt; margin-bottom:0pt" align="justify">\n"; echo $treffer["textstelle"][$i]."<br>\n"; echo "<small><b>Weitere Vorkommnisse: </b>".$treffer["mehr"][$i]."</small></p></td></tr>\n"; echo "<tr><td><a href="http://".$SERVER_NAME."/".$treffer["datei_url"][$i]."" target="_blank">\n"; echo "<img src="/main/newwindow.gif" width="14" height="10" border="0">\n";
echo " http://".$SERVER_NAME."/".$treffer["datei_url"][$i]."</a></td>\n"; echo "<td align="right"><small><b>".$treffer["woerter"][$i]." ".$woerter." | ".$treffer["vorkommnisse"][$i]." ".$vorkommnisse."</b></small></td>\n"; echo "</td></tr></table><br><br>\n"; } } }
if ($treffer_anzahl>0) { echo "Seite: \n"; } $j=ceil($treffer_anzahl/$treffer_pro_seite)-1; for ($i=0;$i<=$j;$i++) { $zahl=$i+1; if (($index+1)!=$zahl) { echo "<a href="$PHP_SELF?suchtext=$suchtext&index=".$i."&grossschreibung=".$grossschreibung."&ganzewoerter=".$ganzewoerter."">"; } echo $zahl; if (($index+1)!=$zahl) { echo "</a>"; } echo " "; } if ($treffer_anzahl>0) { echo "\n"; } } ########### Ende des Suchmaschinenskripts ########### ?>
</td><td width="24%"></td></tr></TABLE>
</body> </html>
Danke schon jetzt
Stephan