ere2w 发表于 2015-3-20 08:22:21

php查找文件内容关键字实例代码

      <?php

      /**

      * 文件: search.php

      * 功能: 搜索指定目录下的HTML文件

      */

      /* 基本函数 */


      //获取目录下文件函数

      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);

                if (empty($title)) {

                        return $default;

                } else {

                        return $title;

                }

      }


      //获取文件描述信息

      function getFileDescribe($file,$length=200, $default="None describe")

      {

                $metas = get_meta_tags($file);

                if ($meta != "") {

                        return $metas;

                }

               $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","/'/i", "/s/");

                $description = preg_replace($pattern, "", $matchResult);

                $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 {

      for
页: [1]
查看完整版本: php查找文件内容关键字实例代码