简单使用站内HTML文件搜索程序

    作者:课课家教育更新于: 2015-11-26 16:16:52

    大神带你学编程,欢迎选课

    今天由小编为大家讲解有关语言编程的文章,在课课家共同了解语言编程其中不被重视的技巧相信对大家一定有很大的帮助

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

    程序代码:

    "well我从事编程语言统计很多年了,有大量的数据来源包括代码存储库、Q&A讨论、招聘广告、社交媒体情况、教程页面访问、学习视频视图、开发者调查等等。数据发表在不同的时间,都可以被认为是精确的,
    也可以被认为是有缺陷的,但是它们可以用于发现行业趋势。最后,不要期望一夜之间就变成一个编码忍者。有些人有一种天然的能力,但也是花了很多很多时间来磨练他们的技能,不断的学习新的技术和技巧。"
    在过去三年中 XML 经历了许多反复,所以目前存在不同版本的 Microsoft XML 分析器也不奇怪。Internet Explorer 4.0 包含早期版本的 XML 分析器,它比 XSL、XML 数据或者大多数其他的 XML 技术(并且有完全不同的 DOM 模型)要早。该早期版本的分析器包含在 MSXML.dll 库中。从 MSDN XML 开发人员中心(英文)可将分析器升级到较新的一种。
      html5教程我们极力建议您升级到新的分析器,因为它要强大得多。Internet Explorer 5.0 包括 MSXML 2.0 分析器,它包含 XSL 和 XML 架构的基本版本。MSXML2 是 SQL Server 2000 附带的分析器版本。MSXML2 包含了许多性能增强的功能,并且在总体上提高了性能和可伸缩性。MSXML3 是当前作为“技术预览”附带的版本。MSXML3 包括 XSLT 和 XPath 支持以及 SAX 接口。

     

    以下为引用的内容:
    /**
     * 文件: 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);
     
     $title = preg_replace(array("/()/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("/()/is", $fileContent, $matchResult);
     
     $pattern = array("/(<[^\\\\x80-\\\\xff]+>)/i","/()+/i", "/()+/i", "/()+/i", "/([])+.*([<\\\\/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 = "
    $keyword
    ";
     
     $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_ ";
     
    //要搜索的关键字
     
    $keyword = "sendmail";
     
    $fileArr = searchFile($dir, $keyword);
     
    $searchSum = count($fileArr);
     
    echo "搜索关键字html视频教程:
    $keyword
      搜索目录:
    $dir
      搜索结果:
    $searchSum
     

     
    ";
     
    if ($searchSum <= 0) {
     
     echo "没有搜索到任何结果";
     
    } else {
     
     foreach ($fileArr as $file) {
     
      echo " - ".getFileSize($file)." ". getFileTime($file) .
     
        "
     
    \\\\n
    ".highLightKeyword(getFileDescribe($file), $keyword) .
        "
     
     
    ";
     
     }
     
    }
     
    ?>
     


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

    文章学习完是不是意犹未尽,还有很多地方不懂更多视频教程尽在课课家官方网站,让我们一起沉浸在知识的海洋。

课课家教育

未登录