<body>
<?
########### PHP-Suchmaschine ###########
########### powered by Viktor Widiker & [url]http://www.widiker.de,[/url] 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("html","htm","php","phtml"); # Dateien mit welchen Endungen werden durchsucht?
$pfade_gesamt="./"; # 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="500" cellpadding="5" cellspacing="0" border="0" bgcolor="#ccddee" align="center">
<tr>
<td align="right">
<?
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 ">
</td>
<td>
<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>
<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>
<?
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($pfade);
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=\"500\" border=\"0\" align=\"center\"><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><center><br><br>Leider nichts gefunden<br><br></center></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></table>\n";
for ($k=0;$k<$treffer_pro_seite;$k++)
{
$i=$index*$treffer_pro_seite+$k;
$platz=$i+1;
if ($platz<=$ende)
{
echo "<table width=\"580\" border=\"1\" cellpadding=\"0\" cellspacing=\"0\" align=\"center\">\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=\"newwindow.gif\" width=\"14\" height=\"10\" border=\"0\">\n";
echo " [url]http://[/url]".$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 "<center>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 "</center>\n"; }
}
########### Ende des Suchmaschinenskripts ###########
?>
</body>
</html>