so_brave 发表于 2011-08-18 14:19

php从文件中搜索关键字方法

php从文件中搜索关键字方法<?php
set_time_limit("600");//以秒为单位,所以是设10分钟为限
$keyword = trim($_POST["keyword"]);//要搜索的关键字

if($keyword == ""){
echo "您要搜索的关键字不能为空!<a href=../search/>返回</a>";
exit(); //结束程序
}



//$dir是搜索的目录$keyword是关键字$array是存放的数组
//遍历所有文件
function listFiles($dir,$keyword,$array){
global $array;//把传过来的数组定义成全局的,在方法外面就能从数组里取到值了
$handle = opendir($dir);
while (false !== ($file = readdir($handle))){
   if ($file!="." && $file!=".."){
    //如果还是目录继续搜索
    if(is_dir("$dir/$file")){
   listFiles("$dir/$file",$keyword,$array);
    }
    else{
   
   //读取文件内容
   $data = fread(fopen("$dir/$file","r"),filesize("$dir/$file"));
   //只在<body>和</body>之间搜索关键字,
   if (eregi("<body([^>]+)>(.+)</body>",$data,$b)){
      $body = strip_tags($b["2"]);
   }
   else{
      $body = strip_tags($data);
   }
   //不搜索自身
   if($file != "search.php"){
      //就去干是否匹配
      if (eregi("$keyword",$body)){
       //从搜索页面里提取出<title>和</title>里的内容,来作为标题
       if (eregi("<title>(.+)</title>",$data,$m)){
      $title = $m["1"];
       }
       else{
      $title = "没有标题";
       }
       //把搜索到的 标题和页面地址,存放到数组里
       //$dir/$file是搜索到的页面地址
       $array[] = "$dir/$file $title";
      
      }
   }
    }
   }
}

   
}

//定义数组
$array = array();

//执行函数
listFiles(".","$keyword",$array);

//打印搜索结果
foreach ($array as $value){
//拆开
list($filedir,$title) = split("[ ]",$value,"2");
//输出
echo "<a href=$filedir target=_blank>$title</a>" . "<br/>\n";
}http://www.97xxoo.org/article/1/2008/20081113330.shtml
页: [1]
查看完整版本: php从文件中搜索关键字方法