file_scan_directory

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

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

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

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

Параметры

$dir Базовый путь для сканирования. Допустимы пути вида sites/all/modules. Может работать некорректно (не найти папку), если в пути содержатся национальные символы (русские, украинские и т.п. буквы).

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

$nomask Массив содержащий файлы/папки, которые не должны включаться в поиск (должны быть проигнорированы).

$callback callback функция, которая будет вызываться для каждого найденного файла или папки. В эту функцию передаётся один параметр - имя файла. Вид, в котором callback-функции будет передано имя указывается параметром $key.

$recurse Когда TRUE - поиск будет проводиться не только в переданной папке, но также и во вложенных папках (рекурсивный поиск).

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

$min_depth Минимальная вложенность папок для сканирования.

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

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

Ассоциативный массив (keyed on the provided key) of objects with 'path', 'basename', and 'name' members corresponding to the matching files.

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

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

drupal_clear_css_cache in includes/common.inc
Удаляет все файлы кэша CSS.
drupal_system_listing in includes/common.inc
Returns an array of files objects of the given type from the site-wide directory (i.e. modules/), the all-sites directory (i.e. sites/all/modules/), the profiles directory, and site-specific directory (i.e. sites/somesite/modules/). The returned array...
file_scan_directory in includes/file.inc
Finds all files that match a given mask in a given directory. Directories and files beginning with a period are excluded; this prevents hidden files and directories (such as SVN working directories) from being scanned.
image_get_available_toolkits in includes/image.inc
Return a list of available toolkits.
install_select_locale in ./install.php
Find all .po files for the current profile and allow admin to select which to use.
install_select_profile in ./install.php
Find all .profile files and allow admin to select which to install.
system_theme_data in modules/system/system.module
Collect data about all currently available themes

Код

<?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) {
          $files = array_merge($files, file_scan_directory("$dir/$file", $mask, $nomask, $callback, $recurse, $key, $min_depth, $depth + 1));
        }
        elseif ($depth >= $min_depth && ereg($mask, $file)) {
          $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;
}
?>
Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

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