EingabeFeld für SuchBegriffe
<html><head><title>Anzeige</title></head>
<body bgcolor="#eeeeee">
<h2>EingabeFeld für SuchBegriffe</h2>
<table border=0><tr>
<form action="<? echo $PHP_SELF ?>" method="post">
<td><input type="text" name="formInput" len="30" maxlen="30"
value='<? echo isset($formInput) ? stripslashes($formInput) : "Html HTML" ?>'></td>
<td><input type="submit" name="Submit"></td>
</form>
</tr></table><hr noshade size="1">
<?
// ====================== HilfsFunktionen =================
//
// In : String aus SuchFeld eines Formulars
// Out: Array mit einzelnen Suchwoerter
// Fkt: Behandelt Woerter in HOCHKOMMATAS als EIN Wort
function GetSearchWords($formInput)
{
$HK = """; // HK nach htmlspecialchars
// a. Worte nach BLANKS aufsplitten
$arr = split(" ",trim($formInput));
// b. HK-Worte zusammenfuegen (HK = HochKomma)
for($str_HK="",$i=0;$i<count($arr);$i++)
if ( strlen($arr[$i]) > 2 ) // Word-Länge > 1
if ( strlen($str_HK) > 0) { // * HK-Modus
$str_HK .= " ".$arr[$i]; // -> HK-Woerter zus.fuegen
if ( ereg($HK,$arr[$i]) ) { // mit HK: Ende
$arrRet[] = $str_HK; // -> HK-Wort ins Array
$str_HK = ""; }
}
else // * nicht HK-Modus
if ( ereg($HK,$arr[$i]) ) // hat HK: Start
$str_HK = $arr[$i];
else $arrRet[] = $arr[$i];
// c. HK-Worte um HK u. BLANKS bereinigen
for($i=0; $i<count($arrRet); $i++) {
$arrRet[$i] = str_replace($HK," ",$arrRet[$i]); // HK in Blanks
$arrRet[$i] = trim($arrRet[$i]); // Blanks weg
}
return $arrRet;
}
// Rekursives Einlesen von Dateien u. Verzeichnissen
// Input : Array mit Basis-Directory
// Return: Array mit allen File/Dir's in Unterverzeichnissen
function GetAllFiles($arrDir)
{
$arrRet_F = array();
for($i=0; $i < count($arrDir); $i++ ) {
$arr = $arrDir[$i];
$arrTmp_F = GetDirFiles($arr["Verz"].$arr["Name"]."/","File");
$arrRet_F = php3_array_merge($arrRet_F,$arrTmp_F);
$arrTmp_D = GetDirFiles($arr["Verz"].$arr["Name"]."/","Dir");
$arrRet_F = php3_array_merge($arrRet_F, GetAllFiles($arrTmp_D) );
}
return $arrRet_F;
}
// Files o. Dirs Einlesen; Link auf HTML-Datei
// Return: Array; $mode = {"Dir","File"}
function GetDirFiles($strPath,$mode)
{
$objDir = opendir($strPath); // Verzeichnis Oeffnen (Referenz)
$arrDir = array();
while ($strFile = readdir($objDir)) { // Verzeichnis Einlesen
if ( ((! strcmp($mode,"Dir") ) && is_dir($strPath.$strFile) ) ||
((! strcmp($mode,"File")) && (! is_dir($strPath.$strFile) ) ) )
if ( IsSelectedFile($strFile,$mode) ) {
$arrTags = array();
$title = "";
if ( ! is_dir($strPath.$strFile) ) {
$arrTags = GetDateiTags($strPath.$strFile); // H1..-Tags
$arrMeta = get_meta_tags($strPath.$strFile); // Meta-Tags
$title = $arrMeta["title"];
if ( strlen($title) < 1 ) $title = "Ohne Titel";
}
$tags_inhalt = $arrTags[0];
$tags = $inhalt = "";
for($i=0;$i<count($arrTags); $i++) {
$tags_inhalt = $arrTags[$i];
if ( ! strstr($tags,$tags_inhalt[0]) ) // Tag noch nicht aufgenommen
$tags .= $tags_inhalt[0]." ";
$inhalt .= $tags_inhalt[1]." ";
}
$link = "<a href=\"../center/anzeige.php3?script=$strPath$strFile&source=yes\" ";
$link .= "target=\"_blank\">$title</a>";
$arrDir[] =
array("Sort" => 0,
"Tref" => 0,
"Verz" => $strPath,
"Name" => $strFile,
"Title" => "$link",
"Inhalt" => $inhalt);
}
}
closedir($objDir); // Verzeichnis Schließen
return $arrDir;
}
// FilterFktion: welche File/Dir ausselektieren ?
function IsSelectedFile($strFile,$mode)
{
if ( ! strcmp($mode,"Dir") ) { // a. Directory
if ( ereg("^\.",$strFile) ) // nicht: "." ".."
return false;
}
else { // b. Filter WEG-Mit wenn:
if ( ! ereg("\.php3",$strFile) ) return false; // nicht ".php3"
if ( ereg("\.inc" ,$strFile) ) return false; // wenn: ".inc"
}
return true; // OK: selektiert
}
// Extrahiert Tags und TagInhalt aus HTML-Datei;
// Return: Array; [0]-Tags (B,H1-x) [1]-Inhalt
function GetDateiTags ($datei)
{
return GetHtmlTags("h1|H1|h2|H2|h3|H3", GetDateiStr($datei));
}
// Extrahiert Html-Tags aus HtmlString
// Return: 2-Dim-Array; [0]-Tag [1]-Inhalt
function GetHtmlTags($tags,$htmlString)
{
$regExp = "<(".$tags.")>";
$arrRet = array();
$arr = split($regExp, $htmlString);
for($i=1;$i < count($arr); $i++) {
if ( ereg("([^<]+)</([^>]+)>",$arr[$i],$regs) )
$arrRet[] = array("$regs[2]","$regs[1]");
}
return $arrRet;
}
// Liefert DateiInhalt als ein String zurück
function GetDateiStr($dateiName)
{
if ( file_exists($dateiName) )
return implode("",file($dateiName));
return "";
}
// DateiArray auf Suchworte untersuchen u. zurueckgeben
// - Treffer je Datei setzen; - SuchWorte highlighten
function GetResultArray($arrResult,$arrWords)
{
$arrRet = array();
for($i=0;$i<count($arrResult);$i++) { // alle Dateien
for($zaehler=0,$j=0;$j<count($arrWords);$j++) { // alle Such-Muster
$word = $arrWords[$j];
$mode = $word[0];
if ( $mode == "+" || $mode == "-")
$word = substr($word,1);
else $mode = "";
$word = quotemeta($word); // vor ereg: *+\?.. maskieren
if ( ereg($word,$arrResult[$i]["Inhalt"]) ) {
if ( $mode == "-" ) { // darf nicht vorhanden sein
$zaehler = 0; break; } // -> Stop
$zaehler++;
$replace = "<font color=\"#ff6666\">".$word."</font>";
$arrResult[$i]["Inhalt"] = ereg_replace($word,$replace,$arrResult[$i]["Inhalt"]);
}
else {
if ( $mode == "+" ) { // muss vorhanden sein
$zaehler = 0; break; } // -> Stop
}
}
if ( $zaehler > 0 ) {
$arrResult[$i]["Tref"] = $zaehler;
$arrResult[$i]["Sort"] = 999 - $zaehler;
$arrRet[] = $arrResult[$i];
}
}
return $arrRet;
}
// Anzeige des Treffer-Ergebnisses
function ShowResult($arr)
{
echo "<div class=\"txt10\"><b><i>Anzahl Treffer:</i> ".count($arr)."</b></div>";
echo "<dl class=\"txt10\">";
for($i=0; $i < count($arr); $i++) { // alle Dateien/Verzeichnisse
$arrDatei = $arr[$i];
if ( $i == 0 ) $maxTref = $arrDatei["Tref"];
$quote = ($arrDatei["Tref"] / $maxTref) * 100;
echo "<dt>".$arrDatei["Title"]."</dt>\n";
echo "<dd><b>Quote: </b> ".$quote." %</dd>";
echo "<dd><b>Datei : </b> ".$arrDatei["Verz"].$arrDatei["Name"]."</dd>\n";
echo "<dd><b>Inhalt :</b> ".$arrDatei["Inhalt"]."</dd><p>\n";
}
echo "</dl>";
}
// ====================== ProgrammAblauf ==================
//
if ( isset($formInput) ) {
$rootPath = "../"; // BasisPfad
// a. SuchWoerter extrahieren
$formInput = stripslashes($formInput); // Slashes entfernen
$formInput = htmlspecialchars($formInput); // Sonderzeichen wandeln
$arrWords = GetSearchWords($formInput); // Suchworte ermitteln
// b. Alle Dateien rekursiv in ein Array einlesen
$arrDir_D = GetDirFiles($rootPath,"Dir"); // Basis-Dir
$arrDir_F1 = GetDirFiles($rootPath,"File"); // Basis-Files
$arrDir_F2 = GetAllFiles($arrDir_D); // Files aus UnterVerzeichnisse
$arrResult = php3_array_merge($arrDir_F1,$arrDir_F2); // Merge: alle in ein Array
// c. Treffer in Array eintragen
$arrResult = GetResultArray($arrResult,$arrWords);
$arrResult = php3_array_multisort($arrResult);
// d. Ausgabe der TrefferListe
ShowResult($arrResult) ; // Ergebnis als Tabelle anzeigen
}
?>
</body></html>