2010-10-01 5 views
2

Как искать текст в некоторых файлах, таких как PDF, doc, docs или txt с помощью PHP? Я хочу выполнять аналогичную функцию как полный поиск текста в MySQL, , но на этот раз я напрямую просматриваю файлы, а не базу данных.Поиск текста в файлах с использованием PHP

Поиск будет выполнять поиск во многих файлах, расположенных в папке. Любое предложение, советы или решения по этой проблеме?

Я также заметил, что google также выполняет поиск по файлам.

+0

Вы считаете нас что-то вроде Lucene, Solr или Sphinx? – Gordon

+0

Спасибо за подсказку. Я собираюсь изучить их. Может быть, они мне полезны. –

ответ

4

Для поиска PDF в вам нужна программа, как pdftotext, который преобразует содержимое от pdf до текста. Для документов Word может быть доступно симулятивное (из-за всего стиля и шифрования в файлах Word).

Пример поиска по PDF-файлам (скопирован из одного из моих сценариев (это фрагмент, а не весь код, но он должен дать вам некоторое представление), где я извлекаю ключевые слова и сохраняю совпадения в массиве PDF-results.):

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

Если вы находитесь под сервера Linux вы можете использовать

grep -R "text to be searched for" ./ // location is everything under the actual directory 

вызывается из PHP с использованием exec в результате

cmd = 'grep -R "text to be searched for" ./'; 
$result = exec(grep); 
print_r(result); 
3

в зависимости от типа файла, вы должны преобразовать файл в текст, а затем поиск через него, используя т.е. file_get_contents() и str_pos(). Для преобразования файлов в текст, у вас есть - у других - следующие инструменты доступны:

  • catdoc файлы слова
  • xlhtml для файлов Excel
  • ppthtml для Powerpoint файлов
  • unrtf для RTF файлов
  • pdftotext для pdf-файлов
+0

Хороший ответ, может пригодиться когда-нибудь для меня тоже;) Я только знал о pdftotext (как вы можете видеть в моем ответе ..;)) +1 – Ben

Смежные вопросы