Список файлов scandir PHP (убрать точки) -> Как сделать сайт на html -> Создание карты сайта из списка html-файлов

Как создать карту для HTML-сайта

Практически в каждой современной CMS имеется возможность создавать автоматическую карту сайта – как sitemap.xml для поисковых роботов, так и HTML-карту для удобства посетителей.

Однако в некоторых случаях возникает необходимость сделать карту для web-ресурса, работающего не на CMS, а на одних HTML-файлах. Такое может понадобиться, например, для старых сайтов, которые изначально делались на «голом» HTML, или для сателлитов, сделанных без использования базы данных ради экономии.

Самый простой способ сделать HTML-карту для сайта – это, с помощью команд PHP просканировать имеющиеся в директории web-ресурса файла, и вывести их список на страницу. Как это сделать?

1. Воспользуемся функцией php scandir, которая сканирует директорию и сохраняет список найденных файлов в массив.

2. Поскольку нам требуются только html-файлы (ссылки на файл .htaccess, robots.txt и CSS-файлы в карте сайта не нужны), сразу же зададим шаблон искомых файлов при помощи функции preg_grep.

$files = preg_grep('~\.(html)$~', scandir(__DIR__));

3. Создадим массив с html-файлами, которые также не должны отображаться в карте сайта. Например, он может выглядеть так:

$exception = array("sitemap.html", "style.html", "index.html");

4. Теперь удалим из массива со списком нужных файлов исключения:

$files = array_diff($files, $exception);

5. Функция scandir возвращает также ссылки на текущую и родительскую директории, которые сохраняются в первых двух элементах массива в виде точек. Удалить их можно так:

array_shift($files); // удаляем из массива '.'
array_shift($files); // удаляем из массива '..'

6. Создаем цикл, который будет поочередно брать каждый элемент массива и обрабатывать их:

for ($i=0; $i
$res = file_get_contents ($files[$i]);

8. Парсим из него значение TITLE для вывода в карте ссылок. Также в карте сайте можно выводить значение из заголовков H1 или любое другое значение.

preg_match("/<title>(.*)<\/title>/siU", $res, $titles);

9. Теперь ссылки на файлы содержатся в массиве $files, а значения TITLE в массиве $titles. Для вывода каждой ссылки используем код:

echo '<a href="'.$files[$i].'" title="'.$titles[1].'">'.$titles[1].'</a><br />';

В итоге у вас получится следующий PHP-скрипт:

$files = preg_grep('~\.(html)$~', scandir(__DIR__));
$exception = array("sitemap.html", "style.html", "index.html");
$files = array_diff($files, $exception);
array_shift($files); // удаляем из массива '.'
array_shift($files); // удаляем из массива '..'
for($i=0; $i(.*)<\/title>/siU", $res, $titles);
echo '<a href="'.$files[$i].'" title="'.$titles[1].'">'.$titles[1].'</a><br />';
}

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


Меню сайта

Как создать карту для HTML-сайта
Как создать карту для HTML-сайта