`

简单站内HTML文件搜索程序

 
阅读更多

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

程序代码:

<?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","/&amp;/i","/&quot;/i","/&#039;/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> &nbsp; 搜索目录: <b>$dir</b> &nbsp; 搜索结果: <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)."&nbsp;". getFileTime($file) .
"<br>/n<font size=2>".highLightKeyword(getFileDescribe($file), $keyword) .
"</font><br><br>";
}
}

?>

完全可以用在自己已经生成静态内容的的搜索, 但是程序效率不高. 如果能够适当的加上 索引/缓存 等机制的话, 我想程序会有趣很多.

分享到:
评论

相关推荐

    DoubleY自动生成HTML全站静态程序 3.0.rar

    4.“酷站收藏、音乐收藏、站内下载”这3个功能栏目默认不添加到程序,后台实时添加/屏蔽,系统系具有文章、图片、作品案例三大模块的“轻量级系统”。 5.图片上传均支持在线剪裁。 6.支持html模板标签自定义,全部...

    DoubleY自动生成HTML全站静态程序 v3.0.rar

    基本功能模块: "文章、相册、作品案例展示、留言板、标签云搜索、站长简介、友情链接",可选模块“酷站收藏、音乐收藏、站内下载”。全部栏目全部采用全静态化技术,数据自动同步更新,也可手动操作。JS和HTML模式...

    符合搜索优化的全静态目录程序

    1、无须安装,整站文件上传即可使用。 2、可以在任何子目录下运行。 3、主题页面只有首页和内页二个模板文件,修改风格方便。 4、自定义首页显示功能。 5、客人递交网站的审核功能。 6、支持多语言, 只要修改模板...

    仿360导航模板 建站安装程序

    6.重装时请复制install文件夹和index.html文件至根目录执行重装。此版本改动较大不可以用114la的install文件夹进行重装会造成不可预料结果 7.安装完后进入后台填写网址相关信息,然后生成全站。 8.114啦补丁更新内容...

    飞鸽传书,用于局域网内传文件

    跨平台信息交流,基于 TCP/IP(UDP),无需服务器,简单易用 ------------------------------------------------------------------------ 1. 系统要求 - Windows 95/98/Me/NT3.51/NT4.0/2000/XP - 要安装 TCP/...

    SXWO符合搜索优化的全静态目录程序

    程序采用asp+access 的技术,由动态页面生成纯静态网站, 符合搜索优化原则,易于搜索引擎收录。可以随意增加、删除和修改类别和具体单个网站信息,操作简单, 发布快捷。 &lt;br&gt;网站描述支持HTML。 &lt;br&gt;特点:...

    YouDianCMS v8.0 开源PC手机微信app小程序五合一 v8.0.zip

    采用先进的静态HTML缓存策略技术,通过设置一个缓存时间,可以自动生成静态HTML文件,而无需人工生成HTML,从而减少维护工作量。 8)一键备份全站 轻松完成网站迁移 系统内置一键备份全站资料和数据库功能,让非...

    简单的命令行实用程序,可将CSV文件转换为可搜索和可排序HTML表。-Python开发

    CSVtoTable简单的命令行实用程序,用于将CSV文件转换为可搜索和可排序HTML表。 支持大型数据集和大量列的水平滚动。 演示这是一个示例csv fi CSVtoTable简单命令行实用工具的演示,它将CSV文件转换为可搜索和可排序...

    D摘网整站程序 V3.0 完整版

    本程序决不含任何恶意代码,请在本站指定下载地址下载本程序; 12、最后一点,本程序不能使用265key网摘3.0官方提供的数据库,因为本程序优化了部分数据库结构,如有疑问请咨询我。 用户名:admin 密码:admin...

    云播搜磁力搜索 1.0.rar

    本程序为磁力搜索小偷程序,一个超级简洁,但绝不简单的小偷程序! 2、使用本程序,仅需一个虚拟主机即可拥有一个有300万以上的磁力连接的网站!各种资源随便搜,没有搜不到,只有想不到! 3、本程序支持二级目录...

    S-CMS企业建站系统(含小程序)源码

    CMS政府建站系统是淄博闪灵网络科技有限公司开发的一款专门为企业建站提供解决方案的产品,前端模板样式主打HTML5模板,以动画效果好、页面流畅、响应式布局为特色,程序主体采用PHP+MYSQL构架,拥有独立自主开发的...

    生成静态html文件的企业门户网站系统

    交通运输企业整站程序,安防公司免费三语版整站程序,包装印刷公司,环保设备,中英文模具加工公司网站繁体商业版下载,服装公司,服饰公司网站免费下载,礼品公司,中文,英文适用的家居用品公司,电子公司网站模板,汽车公司...

    淘宝客小程序源码前端+后台完整版可运行

    1、这是一个微信小程序对接淘宝的淘宝客api自助搜索优惠券领取程序,简单易学,有兴趣的欢迎下载 2、后台采用asp.netMvc框架开发、实现了调用阿里妈妈的淘宝客api接口 3、后台框架可支持拓展二次开发一套网站,...

    淘宝客api自助搜索优惠券领取程序

    1、这是一个微信小程序对接淘宝的淘宝客api自助搜索优惠券领取程序,简单易学,有兴趣的欢迎下载 2、后台采用asp.netMvc框架开发、实现了调用阿里妈妈的淘宝客api接口 3、后台框架可支持拓展二次开发一套网站,...

    淘宝客优惠券领取微信小程序源码(前台和后台).zip

    1、这是一个微信小程序对接淘宝的淘宝客api自助搜索优惠券领取程序,简单易学,有兴趣的欢迎下载 2、后台采用asp.netMvc框架开发、实现了调用阿里妈妈的淘宝客api接口 3、后台框架可支持拓展二次开发一套网站,...

    MicrosoftHTMLHelpWorkshopV1.3汉化版.rar

    HHW 内还含一个图形编辑处理程序(HTML Help Image Editor),图形文件的处理也可以由它简单处理。 2、几个概念 相对来讲制作 chm 文件比较简单,大量的工作实际上是在前期制作 html 文件上,你在 chm ...

    UZCMS镜像采集系统(万能克隆小偷程序) v1.0.rar

    8. 可自由修改网页内容/广告:通过简单的替换规则、可以将目标站站内任意内容、样式、广告、替换成自己想要的内容(html代码替换);可以删除不需要的内容,这一切只需要看的懂最简单的html即可,如果您不会,没关系...

    ASP.NET4高级程序设计第4版 带目录PDF 分卷压缩包 part1

    5.2 global.asax应用程序文件 5.2.1 应用程序事件 5.2.2 演示应用程序事件 5.3 ASP.NET配置 5.3.1 machine.config文件 5.3.2 web.config文件 5.3.3 设置 5.3.4 5.3.5 5.3.6 5.3.7 通过编程读写...

    黑色风格HTML5企业网站 html5网站源码 html5网站源码带后台 html5整站源码带后台

    黑色风格HTML5企业网站以asp+access进行开发,操作简单,便捷。 程序特色: 一:使搜索引擎更加容易抓取和索引 二:提供更多的功能,提高用户的友好体验 三:可用性的提高,提高用户的友好体验 html5响应式摄影网站...

Global site tag (gtag.js) - Google Analytics