如果您的网站是静态页面(用静态页面的好处不多说了),而你的虚拟主机以支持PHP,那么用PHP 做站内的搜索引擎是个不错的选择! 源代码如下:
<?PHP /**************************************************** 文件名:search.php 源作者:不详 修改者:sunthing.xie/sanxin.xie 调用方法: <form method="post" action="search.php"> <input type="text" name="key" size=40 value=""> <input type="submit" value="search"> </form> sunthing 的主页:http://gems.51.net 三新期盼欢迎和大家一起交流 ****************************************************/ if (function_exists("set_time_limit") && !get_cfg_var('safe_mode')){ set_time_limit(600); } $doc_path= $_SERVER["DOCUMENT_ROOT"]; $doc_path_len=strlen($doc_path); if(substr($doc_path,-1)!="/"){ $doc_path=$doc_path."/"; }
function get_msg($path){ global $key, $i; $handle = opendir($path); while ($filename = readdir($handle)) { $newpath = $path."/".$filename; if (is_file($newpath)) { if (substr($newpath,0,3)!='./.'){ $fp = fopen($newpath, "r"); $msg = fread($fp, filesize($newpath)); fclose($fp); match_show($key, $msg, $newpath, $filename); } } if (is_dir($path."/".$filename) && ($filename != ".") && ($filename != "..")) { get_msg($path."/".$filename); } } closedir($handle); return $i; }
function match_show($key, $msg, $newpath, $filename) { global $ar, $i,$doc_path; $key = chop($key); if($key){ $msg = preg_replace("/<style>.+<\/style>/is", "", $msg); $msg = str_replace(" ", " ", $msg); $msg = preg_replace("/<[^>]+>/", "", $msg); $value = preg_match("/.*$key.*/i", $msg, $res); if($value) { $res[0] = preg_replace("/$key/i", "<FONT COLOR=\"red\">$key</FONT>", $res[0]); $i++; $link =str_replace($doc_path,"",$newpath); $ar[] = "<font size=\"3\">$i.</font><a href=\"/$link\"><FONT face=\"verdana\" size=\"2\">$filename</FONT></a><BR><BR><FONT face=\"verdana\" size=\"2\">".$res[0]."</FONT><BR><br>"; } }else { echo "Please Enter Keywords"; exit; } } /****************开始搜索部分************************/ //$i = get_msg("detailedpage");//指定从什么目录搜索 $i=get_msg($doc_path."demo"); if (empty($page)) $page=1; $maxresult=($page*10); $resultcount = count($ar); if ($resultcount==0){ echo" <font color=\"red\"><h2>Sorry, no matches were found. </font></h2> <br>Please try again using different search words. <br><br>"; }else{ if($resultcount%10==0){ $maxpageno=$resultcount/10; }else{ $maxpageno=floor($resultcount/10)+1; } if ($page>$maxpageno){ $page=$maxpageno; $pagemax=$resultcount-1; $pagemin=max(0,$result_count-10); }elseif($page==1){ $pagemin=0; $pagemax=min($result_count-1,10-1); }else{ $pagemin=min($resultcount-1,10*($page-1)); $pagemax=min($resultcount-1,$pagemin+10-1); } $maxresult=min($maxresult,$resultcount); echo "<p align=\"center\">"; echo "<br><h1 align=center>Search Results</h1>"; echo "</p><hr noshade size='1' color='#336699'>"; for ($i=max(0,$maxresult-10); $i<$maxresult; $i++) { print $ar[$i]; } echo "<hr size='1' noshade><p align=\"center\">"; echo " <font face=\"verdana\" size=\"2\">Search $resultcount info </font>"; $nextpage=$page+1; $previouspage=$page-1; echo " --- [ <a href='search.php?key=$key&page=".($page-1)."' target='_self'> <font face=\"verdana\" size=\"2\">Forward 10 <font face=\"verdana\"></a> ]"; echo "[ <a href='search.php?key=$key&page=".($page+1)."' target='_self'> <font face=\"verdana\" size=\"2\">Next 10 <font face=\"verdana\"></a> ] </p>"; } ?>

|