<?php
#==========================================================
#初期設定
#----------------------------------------------------------
#検索元ファイルの取得
$file_name=$_GET['title'];
#----------------------------------------------------------
#検索文字列引数の受け取り
$search_word=$_GET['query'];
#----------------------------------------------------------
#返却用変数の初期化
$xxxxx="";
#----------------------------------------------------------
#セキュリティ対策ルーチン
$sub_security=sub_security();
if($sub_security!=""){
print(mb_convert_encoding($sub_security,"UTF-8","EUC-JP"));
exit;
}
#==========================================================
#メインルーチン
#----------------------------------------------------------
#検索元ファイルを取得
$file_contents=@file_get_contents($file_name);
#----------------------------------------------------------
#無ければ終了
if(!$file_contents){print(mb_convert_encoding("ファイルが存在しません","UTF-8","EUC-JP"));exit;}
#----------------------------------------------------------
#検索処理
//検索用に改行を削除
$file_contents=str_replace("\r","",$file_contents);
$file_contents=str_replace("\n","",$file_contents);
//検索ルーチン実行
$search_result=sub_search($search_word,$file_contents);
//おまじない
$search_result=mb_convert_encoding($search_result,"UTF-8","UTF-8");
//表示、inclemental2.jsに返却
print_r($search_result);
//終了
exit;
#==========================================================
#検索を実行するサブルーチン
function sub_search($search_word,$file_content){
#----------------------------------------------------------
#初期設定
//文字列検索位置初期化
$str_position=0;
//最大ループ回数
$countmax=30;
//前後何文字を取得するか
$print_string=50;
#----------------------------------------------------------
#検索処理
for($countx=0;$countx<$countmax;$countx++){
//検索文字の位置
$str_position=strpos($file_content,$search_word,$str_position+1);
//終わってれば終了
if(!$str_position){break;}
//前のほうの文字取得
if($str_position<$print_string){
$search_result_pre=substr($file_content,0,$str_position);
}else{
$search_result_pre=substr($file_content,${str_position}-$print_string,$print_string);
}
//後のほうの文字取得
$search_result_post=substr($file_content,${str_position}+strlen($search_word),$print_string);
//検索文字列の文字取得
$search_result_mid='<span class="search_result">'.$search_word.'</span>';
//文字列の作成
$search_result.=$search_result_pre.$search_result_mid.$search_result_post.'<br />';
}
//返却
return $search_result;
}
#==========================================================
#セキュリティ対策のサブルーチン
function sub_security(){
#----------------------------------------------------------
#エラーメッセージ
$error_message="";
#----------------------------------------------------------
#検索ファイルは.txtに限定
if(substr($_GET['title'],-3,3)!="txt"){
$error_message.=("要求しているファイルが不正です".substr($file_name,-3,3));
}
return $error_message;
}
?>
|