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 = "&quot;"; // 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>