2010-10-01 77 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