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