Я уже писал статью о поиске по базе данных , и решил, что для полноты картины, стоит написать статью о реализации поиска по файлам на PHP . Например, если на Вашем сайте есть несколько html-страниц , и Вы хотите сделать поиск по ним. В этом материале разберём, как это делается.

Поиск по файлам на PHP

Я уже писал статью о поиске по базе данных, и решил, что для полноты картины, стоит написать статью о реализации поиска по файлам на PHP. Например, если на Вашем сайте есть несколько html-страниц, и Вы хотите сделать поиск по ним. В этом материале разберём, как это делается.

Вот функция, которая принимает директорию, а выводит названия файлов, в которых найдены совпадения, а также количество совпадений:

<?php
  function searchFiles($dir, $search) {
    $files = glob($dir."/*.html"); // Получаем все html-файлы из директории
    $results = array(); // Создаём массив для результатов поиска
    for ($i = 0; $i < count($files); $i++) {
      /* Перебираем все полученные файлы */
      $str = strip_tags(file_get_contents($files[$i])); // Помещаем содержимое файлов в переменную, предварительно убрав все html-теги
      $count = substr_count($str, $search); // Ищем количество вхождений искомой строки в файл
      if ($count) $results[$files[$i]] = $count; // Если хотя бы 1 вхождение найдено, то добавляем файл с количеством вхождений в массив результатов
    }
    return $results; // Возвращаем результат
  }
  $results = searchFiles(".", "ABC"); // Ищем файлы в текущей директории, в которых входит строка "ABC"
  print_r($results); // Выводим массив (если не знаете, как по-другому вывести массив, то Вам сюда)
?>

Вот такой простой скрипт поиска по файлам на PHP. Безусловно, он тривиален и, почти наверняка, Вам придётся его подстраивать под Вашу задачу, но как основу его можно использовать. И обратите внимание, что тут есть задатки релевантного поиска, поскольку ищутся не просто файлы, в которых есть искомая строка, но ещё и сохраняется количество вхождений. В результате, отсортировав массив по количество вхождений можно вывести пользователю результат поиска с сортировкой по релевантности.