$s_dirs = array(""); searches the entire server $s_skip = array("..",".","antsearch.php","prova","riservata.html"); // Which files/dirs do you like to skip? $s_files = "html"; // Which files types should be searched? Example: "html$|htm$|php4$" $min_chars = "3"; // Min. chars that must be entered to perform the search $max_chars = "30"; // Max. chars that can be submited to perform the search $default_val = "Testo da cercare"; // Default value in searchfield $limit_hits = array("100","50","25","10","5"); // How many hits should be displayed, to suppress the select-menu simply use one value in the array --> array("100") $message_1 = "Ricerca non valida!"; // Invalid searchterm $message_2 = "Almeno '$min_chars' caratteri, massimo '$max_chars' caratteri."; // Invalid searchterm long ($min_chars/$max_chars) $message_3= "La vostra ricerca di:"; // Headline searchresults $message_4 = "Nessun risultato."; // No hits $message_5 = "risultati"; // Hits $message_6 = "Match case"; // Match case $no_title = "Senza Titolo"; // This should be displayed if no title or empty title is found in file $limit_extracts_extracts = ""; // How many extratcts per file do you like to display. Default: "" --> every extract, alternative: 'integer' e.g. "3" $byte_size = "51200"; // How many bytes per file should be searched? Reduce to increase speed // search_form(): Gibt das Suchformular aus function search_form($HTTP_GET_VARS, $limit_hits, $default_val, $message_5, $message_6, $PHP_SELF) { @$keyword=$HTTP_GET_VARS['keyword']; @$case=$HTTP_GET_VARS['case']; @$limit=$HTTP_GET_VARS['limit']; echo "
\n", "\n", " "; $j=count($limit_hits); if($j==1) echo ""; elseif($j>1) { echo " "; } echo "\n", "
\n"; } // search_headline(): Ueberschrift Suchergebnisse function search_headline($HTTP_GET_VARS, $message_3) { @$keyword=$HTTP_GET_VARS['keyword']; @$action=$HTTP_GET_VARS['action']; if($action == "SEARCH") // Volltextsuche echo "

$message_3 '".htmlentities(stripslashes($keyword))."'

"; } // search_error(): Auf Fehler testen und Suchfehler anzeigen function search_error($HTTP_GET_VARS, $min_chars, $max_chars, $message_1, $message_2, $limit_hits) { global $HTTP_GET_VARS; @$keyword=$HTTP_GET_VARS['keyword']; @$action=$HTTP_GET_VARS['action']; @$limit=$HTTP_GET_VARS['limit']; if($action == "SEARCH") { // Volltextsuche if(strlen($keyword)<$min_chars||strlen($keyword)>$max_chars||!in_array ($limit, $limit_hits)) { // Ist die Anfrage in Ordnung (min. '$min_chars' Zeichen, max. '$max_chars' Zeichen)? echo "

$message_1
$message_2

"; $HTTP_GET_VARS['action'] = "ERROR"; // Suche abbrechen } } } // search_dir(): Volltextsuche in Verzeichnissen function search_dir($my_server, $my_root, $s_dirs, $s_files, $s_skip, $message_1, $message_2, $no_title, $limit_extracts, $byte_size, $HTTP_GET_VARS) { global $count_hits; @$keyword=$HTTP_GET_VARS['keyword']; @$action=$HTTP_GET_VARS['action']; @$limit=$HTTP_GET_VARS['limit']; @$case=$HTTP_GET_VARS['case']; if($action == "SEARCH") { // Volltextsuche foreach($s_dirs as $dir) { // Alle Verzeichnisse in $s_dirs durchsuchen $handle = @opendir($my_root.$dir); while($file = @readdir($handle)) { if(in_array($file, $s_skip)) { // Alles in $skip auslassen continue; } elseif($count_hits>=$limit) { break; // Maximale Trefferzahl erreicht } elseif(is_dir($my_root.$dir."/".$file)) { // Unterverzeichnisse durchsuchen $s_dirs = array("$dir/$file"); search_dir($my_server, $my_root, $s_dirs, $s_files, $s_skip, $message_1, $message_2, $no_title, $limit_extracts, $byte_size, $HTTP_GET_VARS); // search_dir() rekursiv auf alle Unterverzeichnisse aufrufen } elseif(preg_match("/($s_files)$/i", $file)) { // Alle Dateien gemaess Endungen $s_files $fd=fopen($my_root.$dir."/".$file,"r"); $text=fread($fd, $byte_size); // 50 KB $keyword_html = htmlentities($keyword); if($case) { // Gross-/Kleinschreibung beruecksichtigen? $do=strstr($text, $keyword)||strstr($text, $keyword_html); } else { $do=stristr($text, $keyword)||stristr($text, $keyword_html); } if($do) { $count_hits++; // Treffer zaehlen if(preg_match_all("=]*>(.*)=siU", $text, $titel)) { // Generierung des Link-Textets aus ... if(!$titel[1][0]) // ist leer... $link_title=$no_title; // ...also $no_title else $link_title=$titel[1][0]; // ... vorhanden... } else { $link_title=$no_title; // ...ansonsten $no_title } echo "$count_hits. $link_title
"; // Ausgabe des Links $auszug = strip_tags($text); $keyword = preg_quote($keyword); // unescapen $keyword = str_replace("/","\/","$keyword"); $keyword_html = preg_quote($keyword_html); // unescapen $keyword_html = str_replace("/","\/","$keyword_html"); echo ""; if(preg_match_all("/((\s\S*){0,3})($keyword|$keyword_html)((\s?\S*){0,3})/i", $auszug, $match, PREG_SET_ORDER)); { if(!$limit_extracts) $number=count($match); else $number=$limit_extracts; for ($h=0;$h<$number;$h++) { // Kein Limit angegeben also alle Vorkommen ausgeben if (!empty($match[$h][3])) printf(".. %s%s%s ..", $match[$h][1], $match[$h][3], $match[$h][4]); } } echo "

"; flush(); } fclose($fd); } } @closedir($handle); } } } // search_no_hits(): Ausgabe 'keine Treffer' bei der Suche // font-family : verdana, arial,helvetica,sans-serif; function search_no_hits($HTTP_GET_VARS, $count_hits, $message_4) { @$action=$HTTP_GET_VARS['action']; if($action == "SEARCH" && $count_hits<1) // Volltextsuche, kein Treffer echo "

$message_4

"; } ?> Risultato della Ricerca