簡體   English   中英

使用 PHP 在文件中搜索文本

[英]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()搜索它。 要將文件轉換為文本,除了其他工具之外,您還可以使用以下工具:

  • 用於 word 文件的catdoc
  • 用於 Excel 文件的xlhtml
  • 用於PowerPoint文件的ppthtml
  • 用於 RTF 文件的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM