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";
 }

?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值