2010-10-01 54 views
2

如何使用PHP搜索某些文件(如PDF,doc,docs或txt)中的文本? 我想做類似於MySQL中的全文搜索的功能, 但這次我直接搜索文件,而不是數據庫。使用PHP在文件中搜索文本

搜索將搜索位於文件夾中的許多文件。 有關此問題的任何建議,提示或解決方案?

我也注意到,谷歌也通過搜索文件。

+0

您是否考慮過我們像Lucene,Solr還是Sphinx? – Gordon 2010-10-01 11:56:02

+0

感謝您的提示。我要研究它們。也許他們對我有用。 – 2010-10-01 12:14:05

回答

4

搜索PDF的叫你需要像pdftotext一個程序,它轉換內容從PDF到文本。對於Word文檔,可以使用類似的東西(因爲Word文件中的所有樣式和加密)。

一個用於搜索PDF的例子(從我的一個腳本(它是一個片段,而不是整個代碼,但它應該給你一些理解),我提取關鍵字並將匹配存儲在PDF結果數組中。 ):

foreach($keywords as $keyword) 
{ 
    $keyword = strtolower($keyword); 
    $file = ABSOLUTE_PATH_SITE."_uploaded/files/Transcripties/".$pdfFiles[$i]; 

    $content = addslashes(shell_exec('/usr/bin/pdftotext \''.$file.'\' -')); 
    $result  = substr_count(strtolower($content), $keyword); 

    if($result > 0) 
    { 
     if(!in_array($pdfFiles[$i], $matchesOnPDF)) 
     { 
      array_push($matchesOnPDF, array(             
        "matches" => $result, 
        "type"  => "PDF", 
        "pdfFile" => $pdfFiles[$i])); 
     } 
    } 
} 
1

如果你是一個Linux服務器下,你可以使用

grep -R "text to be searched for" ./ // location is everything under the actual directory 

使用exec PHP導致

cmd = 'grep -R "text to be searched for" ./'; 
$result = exec(grep); 
print_r(result); 
3

根據文件類型,你應該爲文本,然後使用即file_get_contents()str_pos()通過它搜索文件轉換。將文件轉換爲文本,你有 - 人的旁邊 - 提供以下工具:

  • catdoc爲Word文件
  • xlhtml爲Excel文件
  • ppthtml爲PowerPoint文件
  • unrtf爲RTF文件
  • pdftotext for pdf files
+0

不錯的答案,有一天也可以派上用場;)我只知道pdftotext(正如你在我的答案中看到的那樣); +1) – Ben 2010-10-01 12:04:27