如何使用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