如何使用PHP搜索某些文件(如PDF,doc,docs或txt)中的文本? 我想做类似于MySQL中的全文搜索的功能, 但这次我直接搜索文件,而不是数据库。使用PHP在文件中搜索文本
搜索将搜索位于文件夹中的许多文件。 有关此问题的任何建议,提示或解决方案?
我也注意到,谷歌也通过搜索文件。
如何使用PHP搜索某些文件(如PDF,doc,docs或txt)中的文本? 我想做类似于MySQL中的全文搜索的功能, 但这次我直接搜索文件,而不是数据库。使用PHP在文件中搜索文本
搜索将搜索位于文件夹中的许多文件。 有关此问题的任何建议,提示或解决方案?
我也注意到,谷歌也通过搜索文件。
搜索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]));
}
}
}
如果你是一个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);
根据文件类型,你应该为文本,然后使用即file_get_contents()
和str_pos()
通过它搜索文件转换。将文件转换为文本,你有 - 人的旁边 - 提供以下工具:
catdoc
为Word文件xlhtml
为Excel文件ppthtml
为PowerPoint文件unrtf
为RTF文件pdftotext
for pdf files不错的答案,有一天也可以派上用场;)我只知道pdftotext(正如你在我的答案中看到的那样); +1) – Ben 2010-10-01 12:04:27
您是否考虑过我们像Lucene,Solr还是Sphinx? – Gordon 2010-10-01 11:56:02
感谢您的提示。我要研究它们。也许他们对我有用。 – 2010-10-01 12:14:05