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) : "ereg -replace" ?>'></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) ) { $arrMeta = get_meta_tags($strPath.$strFile); // Meta-Tags $title = $arrMeta["title"]; if ( strlen($title) < 1 ) $title = "Ohne Titel"; } $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" => ""); } } 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 } // 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 // BODY der Datei einlesen $htmlStr = implode("",file($arrResult[$i]["Verz"]."".$arrResult[$i]["Name"]) ); $bodyStr = GetHtmlTag($htmlStr,"body"); $bodyStr = htmlspecialchars($bodyStr); for($zaehler=0,$j=0;$j<count($arrWords);$j++) { // alle Such-Muster // Suchwort mit "+"/"-" $word = $arrWords[$j]; $mode = $word[0]; if ( $mode == "+" || $mode == "-") $word = substr($word,1); else $mode = ""; $word = quotemeta($word); // vor ereg: *+\?.. maskieren // if ( ereg($word,$bodyStr) ) { if ( $mode == "-" ) { // darf nicht vorhanden sein $zaehler = 0; break; } // -> Stop $zaehler++; $replace = "<font color=\"#ff6666\">".$word."</font>"."zz"."zz"; $bodyStr = ereg_replace($word,$replace,$bodyStr); } else { if ( $mode == "+" ) { // muss vorhanden sein $zaehler = 0; break; } // -> Stop } } if ( $zaehler > 0 ) { $arr = GetMarkedLines($bodyStr,"zz"."zz"); $arrResult[$i]["Inhalt"] = implode("<br>",$arr); $arrResult[$i]["Tref"] = count($arr); $arrResult[$i]["Sort"] = 999 - count($arr); $arrRet[] = $arrResult[$i]; } } return $arrRet; } function GetMarkedLines($bodyStr,$marke) { $arrTmp = explode("\n",$bodyStr); for($i=0; $i < count($arrTmp); $i++) if ( strstr($arrTmp[$i],$marke ) ) $arr[] = "-&gt; ".str_replace($marke,"",$arrTmp[$i]); return $arr; } function GetHtmlTag($htmlStr,$tagName,$mitTag=0) { if ( ! ($stt1 = strpos($htmlStr,"<" .$tagName,0))) return ""; $end1 = strpos($htmlStr,">",$stt1); if ( ! ($stt2 = strpos($htmlStr,"</".$tagName,0))) return ""; $end2 = strpos($htmlStr,">",$stt2); if ( $mitTag ) return substr($htmlStr,$stt1 ,$end2-$stt1+1); else return substr($htmlStr,$end1+1,$stt2-$end1-1); } // Anzeige des Treffer-Ergebnisses function ShowResult($arr) { echo "<div class=\"txt10\"><b><i>SuchErgebnis:</i> "; if ( count($arr) > 10 ) echo "1 bis 10 von "; echo count($arr)." Treffer</b></div>"; // echo "<dl class=\"txt10\">"; for($i=0; $i < count($arr) && $i < 10; $i++) { // alle Dateien/Verzeichnisse echo "<hr noshade size=1><dl class=\"txt10\">"; $arrDatei = $arr[$i]; if ( $i == 0 ) $maxTref = $arrDatei["Tref"]; $quote = ($arrDatei["Tref"] / $maxTref) * 100; echo "<dt>".($i+1).". ".$arrDatei["Title"]."</dt>\n"; echo "<dd><code> ".$arrDatei["Inhalt"]."</code></dd><p>"; echo "<dd class=\"txt8\"><b>Datei : </b> ".$arrDatei["Verz"].$arrDatei["Name"]; echo "&nbsp; <b>Quote: </b> ".$quote." %</dd>\n"; echo "</dl>"; } //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 // ShowArrayTable($arrResult); ShowResult($arrResult) ; // Ergebnis als Tabelle anzeigen } ?> </body></html>