Home  >  Article  >  Backend Development  >  PHP站内搜索

PHP站内搜索

WBOY
WBOYOriginal
2016-06-23 14:32:152301browse

search.php文件

/**************************************************** 
原作者: uchinaboy 
特点:无需mysql支持;速度快;无需设置路径,放在哪级目录下,就搜索该目录和子目录;可以 
搜索一切文本类型的文件;显示文件相关内容;关键词自动高亮显示。 
修改内容:增加了自动分页和风格设置文件。 
搜索框代码(请单独存为html文件,如果放在search.php相同目录下,无需修改):

method="post" action="search.php"> 
 
****************************************************/ 
require ("search.inc"); 
if (function_exists("set_time_limit") && !get_cfg_var('safe_mode')){ 
set_time_limit(600);} 
function get_msg($path) { 
global $key, $i; 
$handle = opendir($path); 
while ($filename = readdir($handle)) { 
//echo $path."/".$filename."
"; 
$newpath = $path."/".$filename; 
if (is_file($newpath)) { 
$fp = fopen($newpath, "r"); 
$msg = fread($fp, filesize($newpath)); 
fclose($fp); 
match_show($key, $msg, $newpath, $filename); 

if (is_dir($path."/".$filename) && ($filename != ".") &&  ($filename != "..")) { 
//echo "

".$newpath."

"; 
get_msg($path."/".$filename); 


closedir($handle); 
return $i; 


function match_show($key, $msg, $newpath, $filename) { 
 global $ar, $i; 
 $key = chop($key); 
 if($key) { $check_type = preg_match("/.html?$/", $filename); 
 if($check_type) {$title = getHtmlTitle($msg);} 
   $msg = preg_replace("//is", "", $msg); 
   $msg = preg_replace("/]+>/", "", $msg); 
   $value = preg_match("/.*$key.*/i", $msg, $res); 
       if($value) { 

$res[0] = preg_replace("/$key/i", "$key", $res[0]); 
$k = $res[0]; 
$k = strrchr($k, "      $k = substr($k, 1, 100); 
     $k = "$key      if($title) {$m = $title;} else {$m = $filename;} 
     $i++; 
     $link = $newpath; 
     $ar[] = "$i.◆$m

" .$k."

"; 
   } 
 }else { 
   echo "请输入关键词"; 
   exit; 
 } 


function getHtmlTitle($msg) { 

       /* Locate where  is located in html file. */ <br>        $lBound = strpos($msg, '<title>') + 7; //7 is the lengh of <title>. <br> <br>        if ($lBound                 return; <br> <br>        /* Locate where  is located in html file. */ 
       $uBound = strpos($msg, '', $lBound); 

       if ($uBound                 return; 

       /* Clean HTML and PHP tags out of $title with the madness below. */ 
       $title = ereg_replace("[tnr]", '', substr($msg, $lBound, $uBound -  
$lBound)); 
       $title = trim(strip_tags($title)); 

       if (strlen($title)                 return; 

       return $title; 


$i = get_msg("."); 
if (empty($page)) $page=1; 
$maxresult=($page*20); 
$resultcount = count($ar); 
if ($resultcount%20==0) $maxpageno=$resultcount/20; 
       else $maxpageno=floor($resultcount/20)+1; 
if ($page>$maxpageno) { $page=$maxpageno; $pagemax=$resultcount-1; $pagemin=max 
(0,$result_count-20);} 
       elseif ($page==1) {$pagemin=0; $pagemax=min($result_count-1,20-1); } 
       else { $pagemin=min($resultcount-1,20*($page-1)); $pagemax=min($resultcount- 
1,$pagemin+20-1); } 
$maxresult=min($maxresult,$resultcount); 
echo "

"; 
echo "浩园软件检索结果"; 
echo "


"; 
for ($i=max(0,$maxresult-20); $i print $ar[$i]; 

echo "

"; 
echo " 已经搜索到了 $resultcount 条信息"; 
     $nextpage=$page+1; 
     $previouspage=$page-1; 
echo " --- [ 搜索下 20  
个结果
 ]"; 
echo " [ 返回上 20  
个结果
 ]"; 
exit; 

?> 

search.inc文件

 
 
 
 
 
全文检索 
 
 
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Previous article:转载 --- php配置Next article:十大 PHP 框架