[英]Search Text In Files Using PHP
如何使用 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]));
}
}
}
根據文件類型,您應該將文件轉換為文本,然后使用即file_get_contents()
和str_pos()
搜索它。 要將文件轉換為文本,除了其他工具之外,您還可以使用以下工具:
catdoc
xlhtml
ppthtml
unrtf
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 和其他文件不是常規的文本文件,需要更多的腳本和/或不同的庫來閱讀和/或編輯每種不同的類型,除非您能找到一個庫。 這意味着您必須編寫要搜索的每種不同文件類型的腳本,但包括普通文本文件。 如果您不想完全編寫腳本,那么您還必須安裝您想要讀取的每種文件類型所需的每個庫。 但是您仍然需要編寫每個腳本來將它們作為庫函數來處理。
我找到了基本答案在這里堆棧。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.