Я хочу создать модуль поиска, в котором пользователь вводит текст, и этот текст должен искать все файлы в определенном каталоге. Я использовал этот код:
$path_to_check = 'E:/xampp/htdocs/talent_orbit/test/'; $needle = 'test'; foreach(glob($path_to_check.'*.txt') as $filename) { //print_r(file($filename)); foreach(file($filename) as $fli=>$fl) { echo $f1; if(strpos($fl, $needle)!==false) { echo $filename.' on line '.($fli+1).': '.$fl; } } }
Но он работает только для .txt-файла, он должен искать в .doc-файле. Я также изменяю glob($path_to_check.'*.txt') as $filename)
для glob($path_to_check.'*.doc') as $filename)
но он не показывает результат. Пожалуйста, помогите мне в этом.
РЕДАКТИРОВАТЬ :
Я также попытался решить это
php > exec("egrep -rl 'string of what I want to find' full-or-relative-directory", $output); php > print_r($output); Array ( [0] => full-or-relative-directory/foo/bar.xml ) php > $contents = file_get_contents($output[0]);
Он показывает Array (), я не знаю, что поставить между «полным или относительным каталогом», я имею в виду путь.
Мой код: –
php > exec("egrep -rl 'rakesh' E:/xampp/htdocs/talent_orbit/test/", $output); php > print_r($output);
Если это невозможно, можно ли преобразовать файл doc в txt-файл и затем выполнить поиск в этом txt-файле?
Заранее спасибо.
Это невозможно. Файл doc не является файлом « обычного текста ». Попробуйте открыть его в своем редакторе, и вы увидите. Поиск через *.txt
и *.xml
файлы будет работать, потому что это в основном все файлы открытого текста. Файл doc содержит в нем двоичные данные.
Решение будет представлять собой doc-парсер для PHP (например, этот ), но для этого потребуется сценарий, который проходит через файлы, открывает каждый файл с помощью синтаксического анализатора и ищет строку.