• 技术文章 >后端开发 >php教程

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

    2016-06-01 12:30:38原创487
      自己写来简单的搜索自己电脑上的技术资料的. 大概的思路就是寻找指定目录下的文本, 然后如果有与关键字相匹配的数据就把文件名返回, 最后把所有搜索结果显示出来. 显示结果类似于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."//m.sbmmt.com/m/".$curFile);
    } else {
    $fileArr[] = $dir."//m.sbmmt.com/m/".$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", "/(<a.*>) /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 "<a href='//m.sbmmt.com/m/article/$file' target='_blank'>". highLightKeyword(getFileTitle($file), $keyword) .<BR> "</a> - ".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 class='bg-white layui-clear' style="margin:15px 0;"><span style="color:red;">声明:</span>本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。</div><div class='tags bg-white layui-clear pt-5'><span>专题推荐:</span><a href="//m.sbmmt.com/m/search?word=程序" target="_blank">程序</a> <a href="//m.sbmmt.com/m/search?word=搜索" target="_blank">搜索</a> <a href="//m.sbmmt.com/m/search?word=文件" target="_blank">文件</a> <a href="//m.sbmmt.com/m/search?word=简单" target="_blank">简单</a> <a href="//m.sbmmt.com/m/search?word=file" target="_blank">file</a> <a href="//m.sbmmt.com/m/search?word=return" target="_blank">return</a> <a href="//m.sbmmt.com/m/search?word=" target="_blank"></a></div><div><span style="display:inline-block; width: 100%; margin-top: 10px;"> 上一篇:<a style="color: #00AEEF;" href="//m.sbmmt.com/m/article/61141.html">PHP网站后门的隐藏技巧测试报告_PHP</a></span><span style="display:inline-block; width: 100%"> 下一篇:<a style="color: #00AEEF;" href="//m.sbmmt.com/m/article/61143.html">Windows下的PHP5.0安装配制详解_PHP</a></span></div></article><!--<div class="selectButton"><button type="button">点击阅读全文</button></div>--><!--<a href="javascript:;" onclick="location.href='https://m.xp.cn/'" rel="nofollow"><img src="//m.sbmmt.com/m/static/images/articlead.jpg" width="100%" alt="phpstudy集成环境下载"></a>--><!--<a href="//m.sbmmt.com/m/mk.html?t=5" rel="nofollow"><img src="//m.sbmmt.com/m/static/images/ico/12.png?1" width="100%" alt="第12期线上培训班"></a>--><!--<a href="//m.sbmmt.com/m/vip_mobile.html" rel="nofollow"><img src="//m.sbmmt.com/m/static/images/articlead1.gif" width="100%" alt="会员特权"></a>--></div><div class='course-list bg-white layui-clear mt-10'><h4>相关文章推荐</h4><a href='//m.sbmmt.com/m/article/488099.html' title="对PHP排序稳定性问题的深思!" class='alist'>• 对PHP排序稳定性问题的深思!</a><a href='//m.sbmmt.com/m/article/488089.html' title="解析PHP闭包及Clourse类方法的作用" class='alist'>• 解析PHP闭包及Clourse类方法的作用</a><a href='//m.sbmmt.com/m/article/61145.html' title="PHP5.0对象模型探索之抽象方法和抽象类_PHP" class='alist'>• PHP5.0对象模型探索之抽象方法和抽象类_PHP</a><a href='//m.sbmmt.com/m/article/62123.html' title="第十三节对象串行化[13]_PHP" class='alist'>• 第十三节对象串行化[13]_PHP</a><a href='//m.sbmmt.com/m/article/139365.html' title="在CentOS系统上从零开始搭建WordPress博客的全流程记录_php实例" class='alist'>• 在CentOS系统上从零开始搭建WordPress博客的全流程记录_php实例</a></div><div class='course-list bg-white layui-clear mt-10'><ul ><h4>相关课程推荐</h4><li class='layui-clear' style="padding-left: 0px;"><a href="//m.sbmmt.com/m/course/179.html" class="course-arctic-img"><img src='//m.sbmmt.com/img/upload/course/000/000/003/5a17982d48686254.jpg' height="100%"></a><div class='course-intro' style="margin-left: 0px;"><h2><a href="//m.sbmmt.com/m/course/179.html">javascript初级视频教程</a></h2><p class='course-intro-info'>《javascript初级视频教程》是JavaScript的入门课程,旨在让大家认识,了解JavaScript的常见概念</p><p><a href="//m.sbmmt.com/m/course/list/17.html"><span class='level'>JavaScript教程</span></a><span class='count'>78991次播放</span></p></div></li><hr><li class='layui-clear' style="padding-left: 0px;"><a href="//m.sbmmt.com/m/course/181.html" class="course-arctic-img"><img src='//m.sbmmt.com/img/upload/course/000/000/003/5a179283c3885703.jpg' height="100%"></a><div class='course-intro' style="margin-left: 0px;"><h2><a href="//m.sbmmt.com/m/course/181.html">jquery 基础视频教程</a></h2><p class='course-intro-info'>jQuery 很容易学习,希望通过我们的《jquery 基础视频教程》可以帮助大家来更好的学习jQuery。 jQuery 是一个 JavaScript 库,简化了 JavaScript 编程。</p><p><a href="//m.sbmmt.com/m/course/list/19.html"><span class='level'>jQuery教程</span></a><span class='count'>49377次播放</span></p></div></li><hr><li class='layui-clear' style="padding-left: 0px;"><a href="//m.sbmmt.com/m/course/198.html" class="course-arctic-img"><img src='//m.sbmmt.com/img/upload/course/000/000/003/5a169239acf9a131.jpg' height="100%"></a><div class='course-intro' style="margin-left: 0px;"><h2><a href="//m.sbmmt.com/m/course/198.html">javascript三级联动视频教程</a></h2><p class='course-intro-info'>《javascript三级联动视频教程》介绍了javascript开发的三级联动功能,该功能在日常使用中还是经常能用的到的一个。</p><p><a href="//m.sbmmt.com/m/course/list/17.html"><span class='level'>JavaScript教程</span></a><span class='count'>29184次播放</span></p></div></li><hr><li class='layui-clear' style="padding-left: 0px;"><a href="//m.sbmmt.com/m/course/386.html" class="course-arctic-img"><img src='//m.sbmmt.com/img/upload/course/000/000/001/5d1c6df423564706.jpg' height="100%"></a><div class='course-intro' style="margin-left: 0px;"><h2><a href="//m.sbmmt.com/m/course/386.html">独孤九贱(3)_JavaScript视频教程</a></h2><p class='course-intro-info'>javascript是运行在浏览器上的脚本语言,连续多年,被评为全球最受欢迎的编程语言。是前端开发必备三大法器中,最具杀伤力。如果前端开发是降龙十八掌,好么javascript就是第18掌:亢龙有悔。没有它,你的前端生涯是不完整的。《php.cn独孤九贱(3)-JavaScript视频教程》课程特色:php中文网原创幽默段子系列课程,以恶搞,段子为主题风格的php视频教程!轻松的教学风格,简短的教学模式,让同学们在不知不觉中,学会了javascript知识。</p><p><a href="//m.sbmmt.com/m/course/list/17.html"><span class='level'>JavaScript教程</span></a><span class='count'>117516次播放</span></p></div></li><hr><li class='layui-clear' style="padding-left: 0px;"><a href="//m.sbmmt.com/m/course/582.html" class="course-arctic-img"><img src='//m.sbmmt.com/img/upload/course/000/000/001/5d1c6e0d2b744633.jpg' height="100%"></a><div class='course-intro' style="margin-left: 0px;"><h2><a href="//m.sbmmt.com/m/course/582.html">独孤九贱(6)_jQuery视频教程</a></h2><p class='course-intro-info'>jQuery是一个快速、简洁的JavaScript框架。设计的宗旨是“write Less,Do More”,即倡导写更少的代码,做更多的事情。它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作、事件处理、动画设计和Ajax交互。 核心特性可以总结为:具有独特的链式语法和短小清晰的多功能接口;具有高效灵活的css选择器,并且可对CSS选择器进行扩展;拥有便捷的插件扩展机制和丰富的插件。兼容各种主流浏览器,如IE 6.0+、FF 1.5+、Safari 2.0+、Opera 9.0+等,是全球最流行的前端开发框架之一。PHP中文网根据最新版本,独家录制jQuery最新视频教程,回馈PHP中文网的新老用户。</p><p><a href="//m.sbmmt.com/m/course/list/19.html"><span class='level'>jQuery教程</span></a><span class='count'>97013次播放</span></p></div></li><hr></ul></div><div class='discuss layui-clear bg-white'><h3>全部评论<span id='discuss-article'>我要评论</span></h3></div><div class='discuss-submit bg-white' url="//m.m.sbmmt.com/"><li class='info layui-clear'><span class='f-left' id='discuss-submit-close'>取消</span><span class='f-left'>发布评论</span><span class='f-right article-reply-publish' id="61142">发送</span></li><li class='layui-clear'><textarea type='text' rows="6" placeholder="请输入要评论的内容" class="article-reply-content-text"></textarea></li><li class='layui-clear'><button class="layui-btn layui-btn-danger f-right article-reply-publish-button">发布</button></li></div><div class='lock-screen' id='lock-screen'></div><div class='popimg-setting'><div>1/1</div><img src="" width='100%'></div><script src="//m.sbmmt.com/m/static/ueditor/third-party/SyntaxHighlighter/shCore.js"></script><script src="https://vdse.bdstatic.com//search-video.v1.min.js"></script><footer><a href='//m.sbmmt.com/m/' ><i class='layui-icon layui-icon-home '></i>首页</a><a href='//m.sbmmt.com/m/course.html' ><i class='layui-icon layui-icon-play'></i>视频</a><!--<a href='//m.sbmmt.com/m/mk.html?t=14'><img src="//m.sbmmt.com/m/static/images/gif_live.gif" />直播</a>--><a href='//m.sbmmt.com/m/app/'><img src="//m.sbmmt.com/img/upload/article/000/000/003/6108e2ad07387877.png" style="width:20px;height:20px;" /><div style="margin-top:-5px;">下载</div></a><a href='//m.sbmmt.com/m/wenda.html' ><i class='layui-icon layui-icon-code-circle'></i>社区</a><a href='//m.sbmmt.com/m/login' ><i class='layui-icon layui-icon-username'></i>我的</a></footer><div class="headerMask"></div><div class="right_menu"><div class="right_menu_con"><h2 class="hjclass-txt"><i class="layui-icon layui-icon-shrink-right hjclass-txt-i"></i>PHP中文网</h2><div class="menu-list"><a href="//m.sbmmt.com/m/"><span class="item-icon item-1"><img src="//m.sbmmt.com/img/upload/article/000/000/003/5bffb65f99ae2304.png" alt="首页"></span> 首页</a><a href="//m.sbmmt.com/m/course.html"><span class="item-icon item-7"><img src="//m.sbmmt.com/img/upload/article/000/000/003/5bffb82bd09ad628.png" alt="课程"></span> 课程</a><a href="//m.sbmmt.com/m/article.html"><span class="item-icon item-4"><img src="//m.sbmmt.com/img/upload/article/000/000/003/5bffb7e111b3b425.png" alt="文章"></i></span>文章</a><a href="//m.sbmmt.com/m/wenda.html"><span class="item-icon item-2"><img src="//m.sbmmt.com/img/upload/article/000/000/003/5bffb83f04e24328.png" alt="问答"></span> 问答</a><a href="//m.sbmmt.com/m/blog.html"><span class="item-icon item-0"><img src="//m.sbmmt.com/m/static/images/ico/blog.png" alt="博客"></span>博客</a><a href="//m.sbmmt.com/m/dic.html"><span class="item-icon item-9"><img src="//m.sbmmt.com/img/upload/article/000/000/003/5bffb85047b25758.png" alt="词典"></span> 词典</a><a href="//m.sbmmt.com/m/course/type/99.html"><span class="item-icon item-3"><img src="//m.sbmmt.com/img/upload/article/000/000/003/5bffb8736ea90300.png" alt="手册"></span> 手册</a><a href="//m.sbmmt.com/m/xiazai/"><span class="item-icon item-5"><img src="//m.sbmmt.com/m/static/images/ico/resources.png" alt="资源"></span> 资源</a><a href="//m.sbmmt.com/m/search"><span class="item-icon item-6"><img src="//m.sbmmt.com/img/upload/article/000/000/003/5bffb880b460a204.png" alt="搜索"></span> 搜索</a><a href="//m.sbmmt.com/m/app/"><span class="item-icon item-6"><img src="//m.sbmmt.com/img/upload/article/000/000/003/608bbfa30d9cc398.png" style="width:35px;height:35px;" alt="APP下载"></span> APP下载</a></div></div></div><script>isLogin = 0;</script><script type="text/javascript" src="//m.sbmmt.com/m/static/js/jquery.min.js"></script><script type="text/javascript" src="//m.sbmmt.com/m/static/layui/layui.js"></script><script type="text/javascript" src="//m.sbmmt.com/m/static/js/global.js?4.9.47"></script><script>(function () {var bp = document.createElement('script');var curProtocol = window.location.protocol.split(':')[0];if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';} else {bp.src = 'http://push.zhanzhang.baidu.com/push.js';}var s = document.getElementsByTagName("script")[0];s.parentNode.insertBefore(bp, s);})();var _hmt = _hmt || [];(function() {var hm = document.createElement("script");hm.src = "https://m.sbmmt.com/hm.js?43f47cabf6856204df6d083dd89ae407";var s = document.getElementsByTagName("script")[0];s.parentNode.insertBefore(hm, s);})();</script><link rel='stylesheet' id='_main-css' href='//m.sbmmt.com/m/static/css/viewer.min.css' type='text/css' media='all'/><script type='text/javascript' src='//m.sbmmt.com/m/static/js/viewer.min.js?1'></script><script type='text/javascript' src='//m.sbmmt.com/m/static/js/jquery-viewer.min.js'></script><script>$('article').viewer({navbar:true,title:false,toolbar:false,movable:false,viewed:function(){$('img').click(function(){$('.viewer-close').trigger('click');});}});</script><script type="application/ld+json">{"@context": "https://ziyuan.baidu.com/contexts/cambrian.jsonld","@id": "//m.m.sbmmt.com/article/61142.html","appid": "1549852514326010","title": "简单站内HTML文件搜索程序_PHP","images": [""],"description": "自己写来简单的搜索自己电脑上的技术资料的. 大概的思路就是寻找指定目录下的文本, 然后如果有与关键字相匹配的数据就把文件名返回, 最后把所有搜索结果显示出来. 显示结果类似于baidu/google, 呵呵, 这个是纯粹为了好玩. 程序代码: ?php /**","pubDate": "2016-06-01T12:30:38","data": {"WebPage": {"headline": "简单站内HTML文件搜索程序_PHP","wapUrl": "//m.m.sbmmt.com/article/61142.html","pcUrl": "//m.sbmmt.com/m/php-weizijiaocheng-61142.html","fromSrc": "php中文网","domain": "电子科技","category": ["问答"],"isDeleted": 0},"Question": [{"acceptedAnswer":"自己写来简单的搜索自己电脑上的技术资料的. 大概的思路就是寻找指定目录下的文本, 然后如果有与关键字相匹配的数据就把文件名返回, 最后把所有搜索结果显示出来. 显示结果类似于baidu/google, 呵呵, 这个是纯粹为了好玩. 程序代码: ?php /**"}],"ImageObject": [{"contentUrl": "","scale": "5:2"}],"Author": [{"name": "php中文网","jobTitle": ["php公益学习平台"],"headPortrait": "https://img.php.cn/upload/article/000/000/003/5d1b23156bf94358.png"}]}}</script><script>$('.selectButton').hide();</script></body></html>