  
<?PHP

// Common Search Engine 2

// Durchsucht einzelne Zeilen nach dem Suchbegriff
// Wirft die einzelnen Zeilen aus

// Mu angepasst werden

// MIT EINSCHRNKUNGEN ESK1 und ESK2 / OHNE UNTERPFADE

// --------------------------
// Datenschleife alle
// --------------------------


// --------------------------

// Folgende Codezeilen bitte nicht verndern:


// NICHT LSCHEN
//    include("tech/php/data_engine");


// --------------------------

// Wort-Filter 1 + 2 ( Ganzes Wort + Gro & Klein )

// --------------------------


if ($GanzWort == "ja")


// Einfach:
// {$Suchstring = " $SuchTextEingabe ";} 
// Mit preg_replace
// {$Suchstring = "/\b$SuchTextEingabe\b/i";} 


{

	if ($GrossKlein == "ja")
{$Suchstring = "/\b$SuchTextEingabe\b/";} 

else
{$Suchstring = "/\b$SuchTextEingabe\b/i";} 

}

else

// Einfach:
// {$Suchstring = "$SuchTextEingabe";}
// Mit preg_replace
// {$Suchstring = "/$SuchTextEingabe/i";}

{
if ($GrossKlein == "ja")
{$Suchstring = "/$SuchTextEingabe/";}

else
{$Suchstring = "/$SuchTextEingabe/i";}
}

// --------------------------

// --------------------------

// Mit HTML-Maskierungen 2 (1)

// Liefert Suchstring2:

// OHNE Umlaut-Umschreibung
// if $NRS != "ja" NG: Lt sonst bei NEIN das HTML aus 

include("filter_wortend1");
$Suchstring2 = htmlentities($Suchstring);
// echo "<P>TEST: Suchstring2:  $Suchstring2"; 


// --------------------------

// --------------------------


// Weitere Maskierungen (ae, ss, ...):

// Sucht zustzlich zu Entities nach umschriebenen Umlauten:
// Mit Umlaut_Umschreibung 1 (1)

// Liefert Suchstring3:
// NICHT LSCHEN!
// include("umlaut_umschreibung1");
include("filter_umlaut1");



// Liefert Suchstring2: (NG) 
// Liefert Suchstring4: 

// MIT Umlaut-Umschreibung

if ($NRS == "ja")
{
include("filter_wortend1");
$Suchstring4 = htmlentities($Suchstring3);
// echo "<P>TEST: Suchstring4: $Suchstring4";
}


// --------------------------

// --------------------------



// Ansonsten nur: 

// $Suchstring = $SuchTextEingabe;


// --------------------------

// PFADANGABE!
// Nicht lschen

// OK: Nur EIN Pfad auf dem eigenen Server, angegeben in info-x.php 
// ! WENN OHNE UNTERPFADE, diesen ffnen!
// echo "<P>TEST: In RSsuche eingestellter PFAD: $pfad <P>";

// OPEN DIR - Single

// $verz=opendir ($pfad);


// --------------------------


// PFADANGABE 2!

// OK: Multiple Paths: MEHRERE Unter-Pfade auf dem eigenen Server, 
// Ausgehend vom Pfad angegeben in info-x.php 

// Verzeichnis der einzuschlieenden Unterpfade: VORGABEN
// Dateiliste wird ausgelesen, bei Nicht - Jahresverzeichnissen 
// sind Datei-Alter (Spanne, Dauer) dann aber falsch 
// Abhilfe: S. Notwendige Parameter fr ABLAUF_HOLEN

// ACHTUNG! Optional:
// Von in info-x.php abweichende Angabe des Master-Unterverzeichnisses: 
// ! $pfad = "Unterverzeichnis/Dateien/../";

// $pfad = "tech/php/";


// --------------------------

// OPEN DIR - Multiple
// UnterPfade einschlieen:
// NEU: VerzeichnisAnzahl und Verzeichnisse aus VORGABEN

// --------------------------


// FOR Unterverzeichnisse 1



for($p=0; $p<$VerzeichnisAnzahl; $p++)
{

// Finde Unterpfad

// NICHT LSCHEN
include("get_unterpfade1");


// --------------------------


// GOON WHILE:

 while ($file = readdir ($verz))

// WHILE 1 nicht Auflsbar!

{

// --------------------------

// NO_UNIX:

// Datei-FILTER:

// Schliet bestimmte Dateien aus:

// NICHT LSCHEN
include("filter_dateien1");



// --------------------------

// TEST: PROBE
// echo "<P>\nTEST2: FILE: $file <P>\n";


// NEU: Prft ob Datei noch gltig ist (Ablauf)

// ENDUNG: TXT! 
// Oder Endung weg (4), der Rest ist Komma

$GanzeEndung = strrchr($file,".");
$file2 = str_replace("$GanzeEndung", "", $file);

// TEST:
// Echo "GanzeEndung: $GanzeEndung <BR>";
// echo "<P>\nTEST2B: FILE2: $file2 <P>\n";


$name_array1 = explode(",",$file2);


// ALT, OHNE BEGRENZUNG
$Woche1 = "$name_array1[0]";

// NEU, MIT BEGRENZUNG
$Begrenzung1 = "$name_array1[5]";  


// Notwendige Parameter fr ABLAUF_HOLEN

$Filetest = "OK";

// NICHT LSCHEN!
include("ablauf_holen_rs1");


// --------------------------

// TEST: PROBE
// ECHO "<P>ABLAUF-ANGABE: $Ablauf1<P> --- <P>";
// echo "<P>TEST: FILE: $file <P>";

// if ($file == "Ausgeschlossen")


if ($file == "Ausgeschlossen" || $Ablauf1 == "Abgelaufen")
{
$datei = "";
}

else
{

// --------------------------


// FILE ARRAY While 2 - Pro Datei!

$file_array[] = $file; 
$a = (count($file_array));

// Detaillierte Anzeige der Dateien im Unterverzeichnis(Optional):

// echo "<P>TEST: ";
// echo"Dateiliste: <BR>";
// echo "NUMMER der Datei: $a  / "; 
// while (list ($Dat, $NamenX) = each ($file_array)) 
// {
// echo "NAME der Datei: `" .$NamenX. "<br>";
// }


// END Codezeilen bitte nicht verndern 2

// --------------------------

// Ganzen Pfad festlegen:

$GanzerPfad = "$GanzerPfadIntern";

// --------------------------


// KILL S-Datei

$datei = "";
$Dateigefunden = "";




// Wechsel auf DATEI:

if ($file != "Ausgeschlossen") 
{
$datei = $file;
// TEST:
// echo "TEST: Datei ERLAUBT! DATEI: $datei <P>";
}

else
{$datei = "";}
















if ($datei != "")  {$Basis = "$GanzerPfad$datei";}



// --------------------------

// ALT:

// $Zeilen = file("./$Basis");


// --------------------------

// NEU:

$Enddatei = "./$Basis";

// $Zeilen = file("$Enddatei");

if(!(is_dir($Enddatei)) && (file_exists($Enddatei))) 	{$Zeilen = file("$Enddatei");}

// echo "<P>TEST: ENDDATEI: $Enddatei <P>";
// echo "<P>TEST: FILE: $file <P>";


// --------------------------


// KILL BR

echo " ";


// END Codezeilen bitte nicht verndern 1b

// --------------------------


// --------------------------

// Option: Ausgabe-Hintergrund I (Pro Datei)

// echo "\n<DIV STYLE=\"background-color:#FFFFE0; padding:24px; border:double #a8a800 5px;\" title=\"Textlexikon-Ausgabebereich\">\n";

// --------------------------


// --------------------------



// <!-- Anzeige der Datenquellen ANPASSEN 6b -->


// Detaillierte Anzeige der Quellen I (Optional):


// <!-- Anzeige der Quelle verhindern: // vor die Zeile setzen -->

// echo "<BR><SMALL>Gefunden in <U>$Basis</U>: </SMALL><P>";

// <!-- Alternativ: ohne Anzeige des Dateipfades -->

// echo "<BR><SMALL>Gefunden in <U>$file</U>: </SMALL><P>";


// <!-- Ende Anzeige der Datenquellen anpassen 6b -->




// --------------------------
// Suchschleife
// --------------------------

// Engine:

// --------------------------


// Folgende Codezeilen bitte nicht verndern

// -- ALT KEEP --


for($x=0;$x<count($Zeilen);$x++)

{

// ALT /Ohne HTML-Maskierungen
// if (preg_match($Suchstring, $Zeilen[$x]))


// Mit HTML-Maskierungen (2) und ohne 
// Suchstring3 aus: Mit Umlaut-Maskierungen 3 (2)

if (($Suchstring != "" && preg_match($Suchstring, $Zeilen[$x])) or ($Suchstring2 != "" && preg_match($Suchstring2, $Zeilen[$x])) or ($Suchstring3 != "" && preg_match($Suchstring3, $Zeilen[$x]))or ($Suchstring4 != "" && preg_match($Suchstring4, $Zeilen[$x])))


{

// --------------------------


// MIT EINSCHRNKUNGEN 1

// ZWEI EINSCHRNKUNGEN

{

include("esk1_engine");
include("esk2_engine");


// Abfrage EINSCHRNKUNGEN 2

if($Einschr1 == "gepr" && $Einschr2 == "gepr") 

{

// --------------------------


// -- END ALT KEEP --


// NICHT LSCHEN
//    include("tech/php/search_engine");



// --------------------------

// Option: Ausgabe-Hintergrund II (Pro Zeile)

echo "\n<DIV STYLE=\"background-color:#FFFFE0; padding:24px; border:double #a8a800 5px;\" title=\"Textlexikon-Ausgabebereich\">\n";

// --------------------------



// --------------------------

// Ausweis des Ergebnisses 

// --------------------------


// --------------------------

// Treffer hervorheben

// --------------------------

// str_replace ist case sensitive!!

// Ersetzt wird aber immer mit dem originalen Suchstring
// -auch kleingeschrieben.
// Lsung: Nicht SuchTextEingabe, sondern bereinigten Suchstring nehmen
// Vielmehr: Treffer (NICHT suchstring)


// NUR HIER angeben: Suchstring2: Markiert dann Umlaute UND Entities. 
// Allerdings bei Umlauten NUR die Entities Fett. Anders geht's nicht!


// $Ergebnis[$x] = (preg_replace($Suchstring2, "<B>$SuchTextEingabe</B>", "$Zeilen[$x]"));


// Alternativ: Einheitlich ohne Fett (GUT):


$Ergebnis[$x] = (preg_replace($Suchstring2, "$SuchTextEingabe", "$Zeilen[$x]"));


//  Es wird bei  Mehrfunden innerhalb der Zeile das Ergebnis nicht weitergezhlt 
// Es wird, wenn eine Zeilen-Nummer erneut auftaucht, das Ergebnis nicht weitergezhlt. 
// $Ergebnis zhlt, wie oft eine Treffer-Zeile[x] vorkommt- egal wo.
// Versuche haben hier keinen Zweck, da sonst ALLE mehrfachen 
// Vorkommen gezhlt werden, auch die innerhalb einer Datei. 
// Letztere sind aber Mehrfachvorkommen und sollen zusammengezhlt werden

$y = count($Ergebnis);


// ###############


// Zhle Treffer:

$Treffer_array[] = $x; 
$ZT = (count($Treffer_array));

// GEHT!


// --------------------------


// Detaillierte Anzeige der Prfung: (Optional)


// echo "Treffer Nummer $ZT";

// Zhle Treffer, alternativ:
// Zhle, wie oft der Suchstring in Zeile x vorkommt: 

$zaehle = array_count_values($Treffer_array);  
while(list($key, $val) = each($zaehle)) 
{  
if ($val>1)
{
// echo "<BR>" . $key . " - " . $val . " "; 
// echo " = Zhle, wie oft ein Treffer mehr als einmal vorkommt <BR>";

// Diese dazuzhlen:
// echo "SY war bisher $y ; ";

$y = ($y+($val-1));

// echo "Jetzt ist SY = (Y + VAL XYZ - 1) = $y .";
}
}


// ###############


$v = $y+1;
$n = $y+2;


// HIER NUR Suchstring: 

$Ausgabe[$y] = (preg_replace($Suchstring, "<A NAME=\"T$v\" HREF=\"#T$n\">$SuchTextEingabe</A>", "$Ergebnis[$x]"));


// Detaillierte Anzeige der Prfung: (Optional)

$t = count($Ausgabe);

// TEST: 
// echo "\n<BR>\n";
// echo "Zeile-Zahl: $x";
// echo "\n<BR>\n";
// echo "ERGEBNIS: Treffer Y $y";
// echo "\n<BR>\n";
// echo "ERGEBNIS: Treffer T $t";
// echo "\n<BR>\n";


// --------------------------

// Ausgabe ZEILEN bis Erreichen der Hchstanzahl

// --------------------------


// Theoretisch ergebnisgleich: $ZT 

if ($y < $HoechstAnzahl)
{
echo $Ausgabe[$y];
}


// --------------------------
	 echo "</DIV>\n";
// --------------------------



// --------------------------

// Abbruch bei Erreichen der Hchstanzahl

// --------------------------

if	 ($y >= $HoechstAnzahl)
{
break;
}


// --------------------------

// Ausgabe der Fundstellen

// --------------------------


$gefunden = true;

$Dateigefunden = true;


// END Codezeilen bitte nicht verndern 2b

// --------------------------



// <!-- Ausgabe Daten ANPASSEN 7 -->



// TEIL I


// <!-- Ausgabeformat der Daten festlegen:Trennung der Ergebnisse -->
// <!-- Um eine Zeile zu aktivieren, das '//' davor entfernen -->



// echo ". ";
// echo "/ ";
 echo "\n<P>\n";
 echo " * * * ";
 echo "\n<P>\n";
// echo "\n<BR>\n";
// echo "\n<HR>\n";


// Weitere HTML-Formatierungen sind mglich

// <!-- Unterbrechung Ausgabe anpassen 7 -->



// --------------------------

// Folgende Codezeilen bitte nicht verndern


// Mit EINSCHRNKUNGEN (2)
}
// Mit EINSCHRNKUNGEN (1)
}

// IMMER, Ob Mit /ohne EINSCHRNKUNGEN
}
}


if ($Dateigefunden == true)

{


// END Codezeilen bitte nicht verndern 3

// --------------------------



// <!-- Weiter Ausgabe anpassen 7 -->

// TEIL II


// Detaillierte Anzeige der Quellen II (Optional):

// <!-- Anzeige der Quelle verhindern: // vor die Zeile setzen -->

// echo "<BR><SMALL>(Eintrag gefunden in <U>$Basis</U>)</SMALL><P>";

// <!-- Alternativ: ohne Anzeige des Dateipfades -->


// <!-- Alternativ: mit Verzweigung -->

// OK alt, Verweist auf Footer
// echo "<SMALL>(Eintrag gefunden in <A HREF=\"#quelld\"><U>$file</U></A>)</SMALL><P>";


// OK neu, Verweist auf Quellenfilter

include("filter_quellen1");

// Ausschlu verbotener Erweiterungen:

If ($GTO == "")
{
$GTO = "#quelld";
$TARGET = "Target=\"_self\" ";
}

// Nicht in RS:
// echo "<SMALL>(Eintrag gefunden in <A HREF=\"$GTO\" $TARGET><U>$file</U></A>)</SMALL><P>";


// Zurcksetzen

$GTO = "";

// --------------------------

echo "\n<BR>\n";
echo "\n<HR>\n";
echo "\n<P>\n";


// <!-- Ende Ausgabe Daten anpassen 7 -->


// --------------------------

// Folgende Codezeilen bitte nicht verndern:


// END IF Datei gefunden
}


// END NO_UNIX:
}


// END WHILE 1 nicht Auflsbar!
}


// END FOR Unterverzeichnisse 1
}


closedir($verz);

// END Codezeilen bitte nicht verndern 4

// --------------------------




?>

