如何使用 PHP 在 PDF、doc、docs 或 txt 等文件中搜索文本?我想在 MySQL 中执行与全文搜索类似的功能,但这次,我直接搜索文件,而不是数据库。
搜索将在位于文件夹中的许多文件中进行搜索。对此问题有任何建议、提示或解决方案吗?
我还注意到,谷歌也会搜索文件。
如何使用 PHP 在 PDF、doc、docs 或 txt 等文件中搜索文本?我想在 MySQL 中执行与全文搜索类似的功能,但这次,我直接搜索文件,而不是数据库。
搜索将在位于文件夹中的许多文件中进行搜索。对此问题有任何建议、提示或解决方案吗?
我还注意到,谷歌也会搜索文件。
要搜索 PDF,您需要一个像 pdftotext 这样的程序,它将内容从 pdf 转换为文本。对于 Word 文档,可以使用类似的东西(因为 Word 文件中的所有样式和加密)。
一个搜索 PDF 的示例(从我的一个脚本中复制(它是一个片段,不是整个代码,但它应该让您有所了解),我在其中提取关键字并将匹配项存储在 PDF-results-array 中。):
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]));
}
}
}
根据文件类型,您应该将文件转换为文本,然后使用 iefile_get_contents()
和str_pos()
. 要将文件转换为文本,除了其他工具之外,您还可以使用以下工具:
catdoc
对于word文件xlhtml
对于 excel 文件ppthtml
用于PowerPoint文件unrtf
用于 RTF 文件pdftotext
对于 pdf 文件如果您在 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);
2021 我遇到了这个,发现了一些东西,所以我想我会链接到它......
注意:docx、pdf 和其他文件不是常规的文本文件,需要更多的脚本和/或不同的库来阅读和/或编辑每种不同的类型,除非您可以在一个库中找到所有内容。这意味着您必须编写出您想要搜索的每种不同文件类型的脚本,尽管包括一个普通的文本文件。如果您不想完全编写脚本,那么您必须安装每个要读取的每种文件类型所需的库。但是您仍然需要编写每个脚本以将它们作为库函数处理。
我在堆栈上找到了基本答案。