输入banner图图片脚本导航/分类

简单站内HTML文件搜索程序_PHP

  自己写来简单的搜索自己电脑上的技术资料的. 大概的思路就是寻找指定目录下的文本, 然后如果有与关键字相匹配的数据就把文件名返回, 最后把所有搜索结果显示出来. 显示结果类似于baidu/google, 呵呵, 这个是纯粹为了好玩.

  程序代码:

/**
* 文件: search.php
* 功能: 搜索指定目录下的HTML文件
* 创建: 2005-9-23
* 作者: heiyeluren
*/


/* 基本函数 */

//获取目录下文件函数
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>/i", $fileContent, $matchResult);<BR> $title = preg_replace(array("/(<title>)/i","/(<\/title>)/i"), "", $matchResult[0]);<BR> if (empty($title)) {<BR> return $default;<BR> } else {<BR> return $title;<BR> }<BR>}</P> <P>//获取文件描述信息<BR>function getFileDescribe($file,$length=200, $default="None describe")<BR>{<BR> $metas = get_meta_tags($file);<BR> if ($meta['description'] != "") {<BR> return $metas['description'];<BR> }<BR> $fileContent = getFileContent($file);<BR> preg_match("/(<body.*<\/body>)/is", $fileContent, $matchResult);<BR> $pattern = array("/(<[^\x80-\xff] >)/i","/(<input.*>) /i", "/() /i", "/(<img.*>) /i", "/([<script.*>]) .*([<\/script>]) /i","/&/i","/"/i","/'/i", "/\s/");<BR> $description = preg_replace($pattern, "", $matchResult[0]);<BR> $description = mb_substr($description, 0, $length)." ...";</P> <P> return $description;<BR>}</P> <P>//加亮搜索结果中的关键字<BR>function highLightKeyword($text, $keyword, $color="#C60A00")<BR>{<BR> $newword = "<font color=$color>$keyword</font>";<BR> $text = str_replace($keyword, $newword, $text);<BR> return $text;<BR>}</P> <P>//获取文件大小(KB)<BR>function getFileSize($file)<BR>{<BR> $filesize = intval(filesize($file)/1024)."K";<BR> return $filesize;<BR>}</P> <P>//获取文件最后修改的时间<BR>function getFileTime($file)<BR>{<BR> $filetime = date("Y-m-d", filemtime($file));<BR> return $filetime;<BR>}</P> <P>//搜索目录下所有文件<BR>function searchFile($dir, $keyword)<BR>{<BR> $sFile = getFile($dir);<BR> if (count($sFile) <= 0) {<BR> return false;<BR> }<BR> $sResult = array();<BR> foreach ($sFile as $file) {<BR> if (searchText($file, $keyword)) {<BR> $sResult[] = $file;<BR> }<BR> }<BR> if (count($sResult) <= 0) {<BR> return false;<BR> } else {<BR> return $sResult;<BR> }<BR>}</P> <P><BR>/* 测试代码 */</P> <P>//指定要搜索的目录<BR>$dir = "./php_Linux";<BR>//要搜索的关键字<BR>$keyword = "sendmail";</P> <P>$fileArr = searchFile($dir, $keyword);<BR>$searchSum = count($fileArr);</P> <P>echo "搜索关键字: <b>$keyword</b> 搜索目录: <b>$dir</b> 搜索结果: <b>$searchSum</b><br><hr size=1><br>";</P> <P>if ($searchSum <= 0) { <BR> echo "没有搜索到任何结果";<BR>} else {<BR> foreach ($fileArr as $file) {<BR> echo "". highLightKeyword(getFileTitle($file), $keyword) .<BR> " - ".getFileSize($file)." ". getFileTime($file) .<BR> "<br>\n<font size=2>".highLightKeyword(getFileDescribe($file), $keyword) .<BR> "</font><br><br>";<BR> }<BR>}</P> <P>?></P> <P>  完全可以用在自己已经生成静态内容的的搜索, 但是程序效率不高. 如果能够适当的加上 索引/缓存 等机制的话, 我想程序会有趣很多. </div> </div> <script type="text/javascript" src="/layui/layui.js"></script> <script> layui.use('code', function(){ layui.code({ elem: 'pre', //默认值为.layui-code about:false, title:'简单站内HTML文件搜索程序_PHP代码块', encode: true //是否转义html标签。默认不开启 }); }); </script> <footer class="comm-footer"> <ul class="channels"> <li> <a target="_top" href="/system/">操作系统</a> </li><li> <a target="_top" href="/down/">程序下载</a> </li><li> <a target="_top" href="/jquery/">jquery插件库</a> </li><li> <a target="_top" href="/jiaoben/">编程</a> </li><li> <a target="_top" href="/db/">数据库</a> </li><li> <a target="_top" href="/tools/">在线工具</a> </li><li> <a target="_top" href="/framebook/">框架书籍</a> </li><li> <a target="_top" href="/xitongjiaocheng/">系统教程</a> </li><li> <a target="_top" href="/ruanjianxiazai/">软件下载</a> </li> </ul> <ul class="versions"> <li> <a href="https://m.gxlcms.com" class="active">触屏版</a> </li> <li> <a href="https://www.gxlcms.com" target="_top">电脑版</a> </li> </ul> <p><a href="https://beian.miit.gov.cn/" target="_blank" style="color:#ffffff"></a><script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?6c9b8cea1903c9f813f150c04aeebc3c"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script></p> </footer> </body> </html>