php查找文件內容關鍵字實例代碼


    1. <?php

    2. /**

    3. * 文件: search.php

    4. * 功能: 搜索指定目錄下的HTML文件

    5. */

    6. /* 基本函數 */


    7. //獲取目錄下文件函數

    8. function getFile($dir)

    9. {

    10.         $dp = opendir($dir);

    11.         $fileArr = array();

    12.         while (!false == $curFile = readdir($dp)) {

    13.                 if ($curFile!="." && $curFile!=".." && $curFile!="") {

    14.                         if (is_dir($curFile)) {

    15.                                 $fileArr = getFile($dir."/".$curFile);

    16.                         } else {

    17.                                 $fileArr[] = $dir."/".$curFile;

    18.                         }

    19.                 }

    20.          }

    21.         return $fileArr;

    22. }


    23. //獲取文件內容

    24. function getFileContent($file)

    25. {

    26.         if (!$fp = fopen($file, "r")) {

    27.                 die("Cannot open file $file");

    28.         }

    29.         while ($text = fread($fp, 4096)) {

    30.                 $fileContent .= $text;

    31.         }

    32.         return $fileContent;

    33. }


    34. //搜索指定文件

    35. function searchText($file, $keyword)

    36. {

    37.         $text = getFileContent($file);

    38.         if (preg_match("/$keyword/i", $text)) {

    39.                 return true;

    40.         }

    41.         return false;

    42. }


    43. //搜索出文章的標題

    44. function getFileTitle($file, $default="None subject")

    45. {

    46.         $fileContent = getFileContent($file);

    47.         $sResult = preg_match("/<title>.*</title>/i", $fileContent, $matchResult);

    48.         $title = preg_replace(array("/(<title>)/i","/(</title>)/i"), "",        $matchResult[0]);

    49.         if (empty($title)) {

    50.                 return $default;

    51.         } else {

    52.                 return $title;

    53.         }

    54. }


    55. //獲取文件描述信息

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

    57. {

    58.         $metas = get_meta_tags($file);

    59.         if ($meta[description] != "") {

    60.                 return $metas[description];

    61.         }

    62.          $fileContent = getFileContent($file);

    63.         preg_match("/(<body.*</body>)/is", $fileContent, $matchResult);

    64.         $pattern = array("/(<[^x80-xff] >)/i","/(<input.*>) /i", "/(<a.*>) /i", "/(<img.*>) /i", "/([<script.*>]) .*([</script>]) /i","/&amp;/i","/&quot;/i","/&#039;/i", "/s/");

    65.         $description = preg_replace($pattern, "", $matchResult[0]);

    66.         $description = mb_substr($description, 0, $length)." ...";


    67.         return $description;

    68. }


    69. //加亮搜索結果中的關鍵字

    70. function highLightKeyword($text, $keyword, $color="#C60A00")

    71. {

    72.         $newword = "<font color=$color>$keyword</font>";

    73.         $text = str_replace($keyword, $newword, $text);

    74.         return $text;

    75. }


    76. //獲取文件大小(KB)

    77. function getFileSize($file)

    78. {

    79.         $filesize = intval(filesize($file)/1024)."K";

    80.         return $filesize;

    81. }


    82. //獲取文件最後修改的時間

    83. function getFileTime($file)

    84. {

    85.         $filetime = date("Y-m-d", filemtime($file));

    86.         return $filetime;

    87. }


    88. //搜索目錄下所有文件

    89. function searchFile($dir, $keyword)

    90. {

    91.         $sFile = getFile($dir);

    92.         if (count($sFile) <= 0) {

    93.                 return false;

    94.         }

    95.         $sResult = array();

    96.         foreach ($sFile as $file) {

    97.                 if (searchText($file, $keyword)) {

    98.                         $sResult[] = $file;

    99.                 }

    100.         }

    101.         if (count($sResult) <= 0) {

    102.                 return false;

    103.         } else {

    104.                 return $sResult;

    105.         }

    106. }


    107. /* 測試代碼 */


    108. //指定要搜索的目錄

    109. $dir = "./php_Linux";

    110. //要搜索的關鍵字

    111. $keyword = "sendmail";


    112. $fileArr = searchFile($dir, $keyword);

    113. $searchSum = count($fileArr);


    114. echo "搜索關鍵字: <b>$keyword</b> &nbsp; 搜索目錄: <b>$dir</b> &nbsp; 搜索結果: <b>$searchSum</b><br><hr size=1><br>";


    115. if ($searchSum <= 0) {

    116. echo "沒有搜索到任何結果";

    117. } else {

    118. for


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章