Skip to content

Instantly share code, notes, and snippets.

@stfbee
Last active December 16, 2015 20:39
Show Gist options
  • Save stfbee/5493997 to your computer and use it in GitHub Desktop.
Save stfbee/5493997 to your computer and use it in GitHub Desktop.
Рукурсионная генерация сайтмапа
//********************
//Рукурсионная генерация сайтмапа
//@Автор: stfbee
//@Дата: 30.04.2013
//********************
//файл необходимо положить в корень сайта, указана директория, так же создается выходной массив:
$directoryStart = ".";
$siteFolder = Array();
function viewDirectory($directory, $array)
{
//Скаируем директорию и фигачим ее в массив
$directoryArray = scandir($directory);
//сразу же его сортируем
usort($directoryArray, "cmp");
//Первые 2 значения - "../" и "./"
for ($counter = 2; $counter < count($directoryArray); $counter++) {
//Удаляем "./" в начале строки
$string = str_replace("./", "", $directory . "/" . $directoryArray[$counter]);
if (is_dir($directory . "/" . $directoryArray[$counter])) {
$array[] = $string . "/";
//Повторяем для внутренних папок
$array = viewDirectory($directory . "/" . $directoryArray[$counter], $array);
} else {
$array[] = $string;
}
}
return $array;
}
//Функция сортировки списка [Папки, потом файлы, в алфавитном порядке]
function cmp($a, $b)
{
if (is_dir($a) == is_dir($b)) {
//Если оба значения - папки или файлы - отсортировать по имени
return strcmp($a['filename'], $b['filename']);
}
//иначе по типу
return (is_dir($a) > is_dir($b)) ? -1 : 1;
}
//Функции передается директория и массив
$siteFolder = viewDirectory($directoryStart, $siteFolder);
//массив примерно следующего содержания:
// admin/
// style/
// style/style.css
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment