<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><?php/*** 文件: search.php* 功能: 搜索指定目录下的HTML文件*//* 基本函数 *///获取目录下文件函数function getFile($dir){ $dp = opendir($dir); $fileArr = array(); while (!false == $curFile = readdir($dp)) { if ($curFile!="." && $curFile!=".." && $curFile!="") { if (is_dir($curFile)) { $fileArr = getFile($dir."/".$curFile); } else { $fileArr[] = $dir."/".$curFile; } } } return $fileArr;}//获取文件内容function getFileContent($file){ if (!$fp = fopen($file, "r")) { die("Cannot open file $file"); } while ($text = fread($fp, 4096)) { $fileContent .= $text; } return $fileContent;}//搜索指定文件function searchText($file, $keyword){ $text = getFileContent($file); if (preg_match("/$keyword/i", $text)) { return true; } return false;}//搜索出文章的标题function getFileTitle($file, $default="None subject"){ $fileContent = getFileContent($file); $sResult = preg_match("/<title>.*<\/title>/i", $fileContent, $matchResult); $title = preg_replace(array("/(<title>)/i","/(<\/title>)/i"), "", $matchResult[0]); if (empty($title)) { return $default; } else { return $title; }}//获取文件描述信息function getFileDescribe($file,$length=200, $default="None describe"){ $metas = get_meta_tags($file); if ($meta['description'] != "") { return $metas['description']; } $fileContent = getFileContent($file); preg_match("/(<body.*<\/body>)/is", $fileContent, $matchResult); $pattern = array("/(<[^\x80-\xff] >)/i","/(<input.*>) /i", "/(<a.*>) /i", "/(<img.*>) /i", "/([<script.*>]) .*([<\/script>]) /i","/&/i","/"/i","/'/i", "/\s/"); $description = preg_replace($pattern, "", $matchResult[0]); $description = mb_substr($description, 0, $length)." ..."; return $description;}//加亮搜索结果中的关键字function highLightKeyword($text, $keyword, $color="#C60A00"){ $newword = "<font color=$color>$keyword</font>"; $text = str_replace($keyword, $newword, $text); return $text;}//获取文件大小(KB)function getFileSize($file){ $filesize = intval(filesize($file)/1024)."K"; return $filesize;}//获取文件最后修改的时间function getFileTime($file){ $filetime = date("Y-m-d", filemtime($file)); return $filetime;}//搜索目录下所有文件function searchFile($dir, $keyword){ $sFile = getFile($dir); if (count($sFile) <= 0) { return false; } $sResult = array(); foreach ($sFile as $file) { if (searchText($file, $keyword)) { $sResult[] = $file; } } if (count($sResult) <= 0) { return false; } else { return $sResult; }}/* 测试代码 *///指定要搜索的目录$dir = "./includes";//要搜索的关键字$keyword = "Nike Air Max Canada";//searchText($dir, $keyword);$fileArr = searchFile($dir, $keyword);$searchSum = count($fileArr);echo "搜索关键字: <b>$keyword</b> 搜索目录: <b>$dir</b> 搜索结果: <b>$searchSum</b><br><hr size=1><br>";if ($searchSum <= 0) {echo "没有搜索到任何结果";} //else {//foreach ($fileArr as $file) {//echo "<a href='$file' target='_blank'>". highLightKeyword(getFileTitle($file), $keyword) . // "</a> - ".getFileSize($file)." ". getFileTime($file) . // "<br> <font size=2>".highLightKeyword(getFileDescribe($file), $keyword) . // "</font><br><br>";//}//}?>
转载于:https://www.cnblogs.com/alex-13/p/3682621.html