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[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 = "
";
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 = "
";
return $html;
}
//--------------------------------------------------------------------
// HTML print
//
function html($html){
ksort($html);
foreach($html as $in){
echo "$in";
}
return;
}
?>