Очень простой способ - прочитать каждый файл в PHP и выполнить поиск по ним с помощью одной из функций поиска строк.
//loop through all filenames and for each one:
$contents = file_get_contents($filename) ;
if (strpos($contents, $keyword) !== false) {
//found a match!
}
Однако это очень неэффективно, так как вам придется выполнять чтение и поиск файлов каждый раз, когда вы выполняете поиск.
Вот почему поисковые системы заранее создают индексы всех файлов, о которых они знают, а затем просто просматривают эти индексы для ключевого слова поиска. Если вы хотите разобраться в этом, вам понадобится отдельный скрипт (скажем, indexer.php), который будет делать что-то вроде этого:
- цикл по каждому файлу, получение его содержимого
- разбить их на слова
- вести учет уникальных слов, найденных в этом файле
- сохранить эту запись в базе данных или файле на диске
И пусть он запускается время от времени, чтобы обновить свой индекс. Например, его индекс может выглядеть так:
$words = array(
'mobile' => array('filename1.txt', 'filename2.txt'),
'answer' => array('filename3.txt', 'filename5.txt', 'filename6.txt'),
//...
);
Затем, когда вы ищете определенное ключевое слово, вам просто нужно загрузить индекс из файла индекса или базы данных и посмотреть, в каких именах файлов это слово найдено.
if (isset($words[$keyword])) {
echo "Found in: " . join(', ', $words[$keyword]) ;
}
И у вас есть очень упрощенный способ сделать что-то подобное. Далее вы можете сохранить индекс в базе данных, подсчитать, сколько раз слово встречается в каждом файле, чтобы предоставить более релевантные результаты и т. Д. И т. Д.