<?php
//---------------eigene Funktion------------------------------------------
//durchsucht eine htm Datei nach dem Anfangtag TITLE und dem Endtag /TITLE
//der Text dazwischen wird in $title gespeichert.
error_reporting(E_ALL);
function getHTMLTitle($filename)
{
$f = fopen($filename, 'rb');
$data = fread ($f, filesize ($filename));
$title_start = strpos(strtoupper($data), '<TITLE>');
if ($title_start)
{
$title_start += 7;
$title_length = strpos(strtoupper($data), '</TITLE>');
if ($title_length)
{
$title_length -= $title_start;
return substr($data, $title_start, $title_length);
}
//else return 'FEHLER: TITEL Ende nicht gefunden';
else return 'Titel unbekannt';
}
//else return 'FEHLER: TITEL Anfang nicht gefunden';
else return 'Titel unbekannt';
}
//---------------eigene Funktion------------------------------------------
echo "Anzuzeigendes Thema auswählen: <br><br>";
// wenn kein Suchbegriff eingegeben wurde Skript abbrechen
if(!isset($_GET['s']))
{
//abbrechen
die();
}
// wenn Suchbegriff eingegeben
else
{
// Überprüfung der Länge des Strings, wenn kleiner wie 2 dann Fehlermeldung
if (strlen($_GET['s']) < 2)
{
echo "Bitte geben Sie mehr als 2 Zeichen ein!";
}
// Wenn Stringlänge OK ...
else
{
//hilfsvariable
$result=0;
$search = $_GET['s'];
// dateinamen der html dateien einlesen
foreach (glob('*.htm') as $document)
{
$array = array();
$anzahl = array();
//aktuellen Dokumentnamen übergeben
$title = getHTMLTitle($document);
//hilfsVariable
$titleNew = 0;
//wenn stringlänge von title länger als 10 dann ...
if (strlen($title) > 10)
{
$punkte = '...';
//ab dem ersten zeichen zählen und auf 10 zeichen kürzen
$GekuerzterTitle = substr($title, 0, 26);
//Punkte an gekürzten text anhängen
$titleNew = $GekuerzterTitle.$punkte;
}
$content = strip_tags(file_get_contents($document));
$array = explode(" ",$content);
$vorkommen = array();
for($y=0;$y<count($array);$y++) {
if (!strcasecmp($array[$y],$search) ) {
$test = $array[$y-1] . " " . $array[$y] . " " . $array[$y+1];
array_push($vorkommen,$test);
}
if ( preg_match("/$search/i",$array[$y]) ) {
array_push($anzahl,$y);
}
}
//wenn anzahl nicht leer dann ...
if(!empty($anzahl) )
{
//hilfsvariable
$result=1;
//Ankerpunkte für Treffer im Dokument hochzählen
for($y=0;$y<count($anzahl);$y++)
{
//wenn y kleiner wie 1 dann titel ausgeben, ansonsten nicht (Gruppierung)
if ($y < 1)
{
//wenn titel nicht länger als 10 zeichen unveränderten titel ausgeben
if ($titleNew == 0)
{
echo $title;
}
//wenn titel länger als 10 zeichen veränderten titel ausgeben
else
{
echo $titleNew;
}
}
//ausgabe des links für die Treffer
echo "<li><a href='viewer.php?file=".$document."&search=".$search."#anker".$y."' target=\"MAIN_FRAME\">".$vorkommen[$y]."</a></li> ";
}
// nicht zusammengehörende themen splitten
echo "<br>";
}
}
// Wenn $result Variable ungleich 1, dann Fehlermeldung ausgeben
if ($result !== 1)
{
echo "<br><span style='color:red;'>Es wurden keine mit Ihrer Suchanfrage - <b>".$search."</b> - übereinstimmenden Dokumente gefunden.</span>";
}
}
}
?>