PHP を使用して PDF、doc、docs、txt などのファイル内のテキストを検索するにはどうすればよいですか? MySQL で全文検索と同様の機能を実行したいのですが、今回はデータベースではなくファイルを直接検索します。
検索は、フォルダーにある多くのファイルを検索します。この問題に対する提案、ヒント、または解決策はありますか?
また、Googleもファイルを検索していることに気付きました。
PHP を使用して PDF、doc、docs、txt などのファイル内のテキストを検索するにはどうすればよいですか? MySQL で全文検索と同様の機能を実行したいのですが、今回はデータベースではなくファイルを直接検索します。
検索は、フォルダーにある多くのファイルを検索します。この問題に対する提案、ヒント、または解決策はありますか?
また、Googleもファイルを検索していることに気付きました。
PDF を検索するには、コンテンツを PDF からテキストに変換する pdftotext のようなプログラムが必要です。Word ドキュメントの場合は、似たようなものを利用できる可能性があります (Word ファイルのすべてのスタイル設定と暗号化のため)。
PDF を検索する例 (私のスクリプトの 1 つからコピーされたもの (コード全体ではなくスニペットですが、ある程度理解できるはずです) で、キーワードを抽出し、一致を 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
ワードファイル用xlhtml
エクセルファイル用ppthtml
パワーポイントファイル用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);