如何使用PHP搜索某些文件(如PDF,doc,docs或txt)中的文本? 我想在MySQL中执行与全文搜索类似的功能, 但这一次,我直接搜索文件,而不是数据库。
搜索将搜索位于文件夹中的许多文件。 针对此问题的任何建议,提示或解决方案?
我也注意到,谷歌也会搜索文件。
答案 0 :(得分: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 :(得分:3)
根据文件类型,您应将文件转换为文本,然后使用file_get_contents()
和str_pos()
进行搜索。要将文件转换为文本,您可以使用以下可用工具:
catdoc
用于word文件xlhtml
for excel files ppthtml
for powerpoint files unrtf
用于RTF文件pdftotext
了解pdf文件答案 2 :(得分: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 :(得分:0)
2021 年我遇到了这个并找到了一些东西,所以我想我会链接到它......
注意:docx、pdf 和其他文件不是常规文本文件,需要更多脚本和/或不同的库来阅读和/或编辑每种不同的类型,除非您可以找到一个库。这意味着您必须编写要搜索的每种不同文件类型的脚本,但包括普通文本文件。如果您不想完全编写脚本,那么您还必须安装您想要读取的每种文件类型所需的每个库。但是您仍然需要编写每个脚本来将它们作为库函数来处理。
我在堆栈中找到了基本答案 here。