FM掲示板のみ稼動。現行+過去ログの全ての文書に対して検索をかけます。
対照は、タイトル、名前、本文
記事タイトルをクリックすると該当スレッドにジャンプしますが、記事そのものにはリンクされません。スレッドを開いたらそこで探してください
"; define("INFO_TXT" ,$info_txt); $html[6] = "
"; if($word !=""){ define("WORD" ,$word); $word = qry_chk(); // if(mb_strlen($word) > 3){ if(strlen($word) > 3){ $word_ary = explode(" ",$word); $arys = makeLogArrays($search_dir); $hitLogs = wordSearch($arys,$word_ary); $html[6] .= returnHitLogs($hitLogs,$arys); // $sNum = count($hitLogs) - 1; // $html[4] = "
検索ワード : ".$word." / 検出数 : ".$sNum."
\n"; $html[5] = "
\n"; $html[7] = "
\n"; } } $html[0] = htmlHead(); $html[2] = htmlForm(); $html[9] = htmlFoot(); html($html); exit; //------------------------------------------------------------------- //------------------------------------------------------------------- //初期画面(入力フォーム) function htmlForm($my_url = MYname){ if(isset($_POST['word'])){$word = $_POST['word'];}else{$word = "";} $html = "
検索ワード :
[ 戻る ]
".INFO_TXT."
"; return $html; } //うけとったサーチキーワードのチェック function qry_chk($word = WORD){ $word = stripslashes($word); $word = strip_tags($word); $word = addslashes($word); $word = str_replace(" "," ",$word);//全角スペース→半角スペース $word = str_replace(" "," ",$word);//半角スペース*2→一つ return $word; } //すべての記事(過去ログ含む)を配列化 function makeLogArrays($search_dir){ foreach($search_dir as $in){ $my_dir = opendir($in); while($file_name = readdir($my_dir)){ if(ereg(".cgi",$file_name)){ // list($no,$exif) = explode(".",$file_name); $load_file = $in."/".$file_name; $data = file($load_file); // $arysKey = str_replace("/",".",$load_file); $arysKey = $in.".".$file_name; $arys[$arysKey] = $data; } } } return $arys; } //ワード検索 function wordSearch($arys,$word_ary){ //サーチワード $sWord = ""; foreach($word_ary as $in){ if($in != ""){ $sWord .= "(.*)(".$in.")(.*)"; } } // $sWord = substr($sWord,0,-1); $hitArys[""][""] = "1"; mb_regex_encoding('SJIS'); $cont = 1;//ヒット件数がVIW_MAX件以上の場合は、VIW_MAX件まで表示 foreach(array_keys($arys) as $key){ foreach(array_keys($arys[$key]) as $keyb){ $logline = $arys[$key][$keyb]; // echo $logline; if(mb_eregi("$sWord",$logline)){ // if($test = mb_eregi('(あか)',$logline)){ $hitArys[$key][$keyb] = $logline; $cont ++; if($cont > VIW_MAX){ $hitArys[$key]['999'] = "!!<>抽出が".VIW_MAX."件を超えたため、途中で停止<><><>".VIW_MAX."件以下を狙ってください<>製作者のテヌキ<><><><>"; return $hitArys; } } } } return $hitArys; } //ヒットした記事の表示 function returnHitLogs($ary,$allLog){ $html = ""; foreach(array_keys($ary) as $key){ $html .= "\n"; //スレタイ foreach(array_keys($ary[$key]) as $keyb){ $logAry = explode("<>",$ary[$key][$keyb]); if(count($logAry) > 5){ if($keyb != "999"){ $sldNo = explode(".",$key); $logAry[1] = "".$logAry[1].""; $html .= "No.".$logAry[0]." ".$logAry[1]." - ".$logAry[2]." (".$logAry[5].")"; $html .= "\n
"; }else{ $html .= "No.".$logAry[0]." ".$logAry[1]." - ".$logAry[2]." (".$logAry[5].")"; $html .= "\n
"; } } } $html .= "\n"; } return $html; } //ヘッダ function htmlHead(){ $html = " Patio-Search ByAkanana "; return $html; } //フッタ function htmlFoot(){ $html = "
Patio Search by FMnote
"; return $html; } //-------------------------------------------------------------------- // HTML print // function html($html){ ksort($html); foreach($html as $in){ echo "$in"; } return; } ?>