以下为引用的内容:
<?php /** * 文件: search.php * 功能: 搜索指定目录下的HTML文件 * 创建: 2005-9-23 * 作者: heiyeluren <heiyeluren AT gmail.com> */
/* 基本函数 */
//获取目录下文件函数 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 = "./php_Linux"; //要搜索的关键字 $keyword = "sendmail";
$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>\n<font size=2>".highLightKeyword(getFileDescribe($file), $keyword) . "</font><br><br>"; } }
?>
|