Tr> </table> </form> </body> </html> search.htm フォームから渡された内容は以下の通りです //検索キーワードを取得します $keyword=trim($_POST["keyword"]); //空かどうかを確認します if ($keyword ==""){ echo "検索したいキーワードを空にすることはできません"; exit;//プログラムを終了します } ?>
このように、訪問者が入力したキーワードがが空の場合、ヒントを作成できます。以下はすべてのファイルのループです。
関数 opendir、readdir、または PHP Directory クラスを使用して、すべてのファイルを再帰的に走査できます。現在は前者を使用します。 //すべてのファイルを走査する関数 function listFiles($dir){ $handle=opendir($dir); while(false!==($file=readdir( $ハンドル)){$ dir/$ file ");ファイルの内容を読み取り、その内容にキーワード $keyword が含まれているかどうかを確認し、含まれている場合は、ファイル アドレスを配列に割り当てます。 //$dir は検索ディレクトリ、$keyword は検索キーワード、$array は格納された配列です function listFiles($dir,$keyword,&$array){ $handle=opendir( $ dir); while(false!==($file=readdir($handle))){ $dir/$file")){ $data=fread("$dir /$file"," r"),filesize("$dir/$file")); if( eregi("$keyword",$data)){ > (); //関数 listFiles(".","を実行) php",$array); //検索結果を印刷します foreach($array as $value){ echo "$value"." } ?>
次にこの結果を結合しますプログラムの先頭にキーワードを入力すると、Web サイト内の関連する結果が検索されたことがわかります。現在改善中です。 1.コンテンツのタイトルを記載します 場所 if(eregi("$keyword",$data)){ ereg("$keyword",$data)){ (eregi("(.+)",$data, $m)){ タイトルなし」; } 原則として、ファイルの内容に xxx が見つかった場合は、xxx がタイトルとして取り出されます。タイトルに「No Title」という名前を付けます
2. Web ページのコンテンツのトピック部分のみを検索します。 Web ページを作成するときは、必ず大量の HTML コードが含まれますが、これらは検索対象ではないため、削除する必要があります。現在、strip_tags で正規表現を使用していますが、すべてを削除できるわけではありません。 $ $data = FREAD (FOPEN ("$ DIR/$ File", "R"), Filesize ("$ DIR/$ File"); .php”){ ("$dir/$file")); if(eregi("]+)>(.+)",$data,$b)){ $body=strip_tags($b["2" ]; "$ keyword"、$ body))){
3、title foreach($ array as $ value)にリンクを追加します{ echo "$ value"。 "&lt; br&gt; n"; } を foreach ($array as $value)に変更しました{ //Open list($filedir,$title)=split("[ ]",$value,"2"); //Output echo "$value"."< br>n"; } 4 タイムアウトを防ぐ ファイル数が多い場合、PHPの実行時間がタイムアウトにならないようにする必要があります。ファイルヘッダーに set_time_limit(“600”); 秒単位を追加できるため、上記の制限は 10 分に設定されます。
つまり、完全なプログラムは set_time_limit("600"); //検索キーワードを取得します $keyword=trim($_POST["keyword"]); // であるかどうかを確認しますempty if($keyword==""){ echo "検索したいキーワードを空にすることはできません"; exit;//プログラムを終了します } function listFiles($dir,$keyword,&$array) { $handle=opendir($dir); while(false!==($file=readdir($handle))){ if($file!="."&&$file!="..") { if(is_dir("$dir/$file")){ /$ file","r"),filesize("$dir/$file")); if(eregi(" | $ body = sprip_tags($ data);
php"){
if(eregi( "$ keyword "、$ body)){、$ data、$ m)){
タイトル= $ m [" 1 "]; ".","$keyword",$array);
foreach($array as $value){
//逆アセンブル
list($filedir,$title)=split("[ ]",$value,"2");
//出力
echo "$title " ."
n";
}
?>
ここまでは、コンテンツ処理部分を変更して、タイトルを検索したり、検索エンジンを改良したりすることもできます。コンテンツを検索します。ページネーションも考慮してください。これは内緒にしておいてください。
ここでは、eregi の代わりに preg_match を使用した方がはるかに高速であることを説明します。分かりやすいように一般的に使われているエレギを使用しています
声明:この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。