有没有一种简单的方法来读取目录中的文件名并添加到数组?

时间:2010-08-18 06:07:51

标签: php arrays directory

我有一个目录:Audio/,其中只有mp3文件。我想自动创建指向这些文件的链接的过程。有没有办法读取目录并将该目录中的文件名添加到数组?

如果我们可以做一个关联数组,并且密钥是文件名减去.mp3标记,那就太酷了。

有什么想法吗?

详细说明:我实际上有几个Audio/文件夹,每个文件夹包含不同事件的mp3。正在从数据库中提取事件详细信息并填充表。这就是我复制代码的原因,因为现在在每个Audio/文件夹中,我必须为下载链接定义文件名并定义mp3播放器的文件名。

谢谢!这将大大简化我的代码,因为我现在一遍又一遍地重复大量的代码!

6 个答案:

答案 0 :(得分:3)

SPL方式是DirectoryIterator

$files = array();
foreach (new DirectoryIterator('/path/to/files/') as $fileInfo) {
    if($fileInfo->isDot() || !$fileInfo->isFile()) continue;
    $files[] = $fileInfo->getFilename();
}

答案 1 :(得分:3)

为了完整性:你也可以使用glob

$files = array_filter(glob('/path/to/files/*'), 'is_file'); 

这将返回所有文件(但不是文件夹),您可以根据需要进行调整。

要获取文件名(而不是具有完整路径的文件),只需添加:

$files = array_map('basename', $files);

答案 2 :(得分:1)

是:使用scandir()。如果您只想要没有扩展名的文件名,请对从scandir()收到的数组中的每个元素使用basename()

答案 3 :(得分:1)

这应该可以做你想要的:

// Read files
$files = scandir($dirName);
// Filter out non-files ('.' or '..')
$files = array_filter($files, 'is_file');
// Create associative array ('filename' => 'filename.mp3')
$files = array_combine(array_map('basename', $files), $files);

答案 4 :(得分:1)

当然......我认为这应该有用......

$files[] = array();
$dir = opendir("/path/to/Audio") or die("Unable to open folder");
    while ($file = readdir($dir)) {
        $cleanfile = basename($file);
        $files[$cleanfile] = $file;
    }
    closedir($dir);

我想这应该有用......

答案 5 :(得分:1)

$results = array();
$handler = opendir($directory);
while ($file = readdir($handler)) {
  if ($file != "." && $file != "..") {
    $results[] = $file;
  }
}
closedir($handler);

这应该可行,如果你想要从数组中排除任何文件,只需将它们添加到if语句,对于文件扩展名也是如此