file_scan_directory

Хочешь помочь с переводом? Это очень просто и быстро. Лишь зарегистрируйся, и можешь тут же начать переводить.

includes/file.inc, строка 883

Версии
5 – 6
file_scan_directory($dir, $mask, $nomask = array('.', '..', 'CVS'), $callback = 0, $recurse = TRUE, $key = 'filename', $min_depth = 0, $depth = 0)

Ищет все файлы которые соответствуют заданной маске в заданной директории. Имена файлов начинающиеся с точки исключаются; это предотвращает появление скрытых файлов и каталогов (например, SVN рабочие каталоги) в результатах сканирования.

Параметры

$dir Директория для сканирования. Без завершающего слеша.

$mask Регулярное выражение для поиска файла.

$nomask Массив файлов и директорий которые будут игнорироваться.

$callback Callback функция для проверки каждого файла.

$recurse Если TRUE, директории будут сканироваться рекурсивно.

$key Используется для возвращаемого массива файлов. Возможные значения: "filename", для пути, начиная с $dir, "basename" для базового имени файла, и "name" - для имени файла без расширения.

$min_depth Минимальная глубина в дереве директорий, начиная с которой файлы будут возвращаться.

$depth Текущая глубина рекурсии. Этот параметр используется только этой функцией и не должен быть передан.

Возвращаемое значение

Ассоциативный массив объектов с 'path', 'basename' и 'name' членами соответствуют отобранным файлам.

Связанные темы

▾ 9 функции вызывают file_scan_directory()

drupal_clear_css_cache in includes/common.inc
Удаляет все файлы кэша CSS.
drupal_clear_js_cache in includes/common.inc
Удаляет все файлы кэша JS.
drupal_system_listing in includes/common.inc
Return an array of system file objects.
file_scan_directory in includes/file.inc
Ищет все файлы которые соответствуют заданной маске в заданной директории. Имена файлов начинающиеся с точки исключаются.
image_get_available_toolkits in includes/image.inc
Возвращает список доступных наборов инструментов.
install_find_locales in ./install.php
Find all .po files for the current profile.
install_find_profiles in ./install.php
Find all .profile files.
locale_batch_by_component in includes/locale.inc
Подготовка пакетной обработки при инсталяции модулей или включении темы. Она импортирует переводы для недавно добавленных компонентов на всех языках, уже настроенных на сайте.
locale_batch_by_language in includes/locale.inc
Подготовка к пакетному импорту переводов для всех включенных модулей данного языка

Код

<?php
function file_scan_directory($dir, $mask, $nomask = array('.', '..', 'CVS'), $callback = 0, $recurse = TRUE, $key = 'filename', $min_depth = 0, $depth = 0) {
  $key = (in_array($key, array('filename', 'basename', 'name')) ? $key : 'filename');
  $files = array();

  if (is_dir($dir) && $handle = opendir($dir)) {
    while (FALSE !== ($file = readdir($handle))) {
      if (!in_array($file, $nomask) && $file[0] != '.') {
        if (is_dir("$dir/$file") && $recurse) {
          // Give priority to files in this folder by merging them in after any subdirectory files.
          $files = array_merge(file_scan_directory("$dir/$file", $mask, $nomask, $callback, $recurse, $key, $min_depth, $depth + 1), $files);
        }
        elseif ($depth >= $min_depth && ereg($mask, $file)) {
          // Always use this match over anything already set in $files with the same $$key.
          $filename = "$dir/$file";
          $basename = basename($file);
          $name = substr($basename, 0, strrpos($basename, '.'));
          $files[$$key] = new stdClass();
          $files[$$key]->filename = $filename;
          $files[$$key]->basename = $basename;
          $files[$$key]->name = $name;
          if ($callback) {
            $callback($filename);
          }
        }
      }
    }

    closedir($handle);
  }

  return $files;
}
?>
Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Вход в систему