Есть ли простой способ читать имена файлов в каталоге и добавлять в массив?

У меня есть каталог: Audio/ и в этом будут только файлы mp3. Я хочу автоматизировать процесс создания ссылок на эти файлы. Есть ли способ прочитать каталог и добавить имена файлов в этом каталоге в массив?

Было бы вдвойне здорово, если бы мы могли создать ассоциативный массив, и ключ должен быть именем файла минус тег .mp3.

Есть идеи?

Чтобы уточнить: у меня есть несколько Audio/ папок, и каждая папка содержит mp3-файлы другого события. Информация о мероприятии извлекается из базы данных и заполняется таблицей. Вот почему я дублирую код, потому что прямо сейчас в каждой Audio/ папке мне нужно определить имена файлов для ссылок для загрузки и определить имена файлов для mp3-плеера.

Спасибо! Это значительно упростит мой код, так как прямо сейчас я повторяю тонны кода снова и снова!

Related of "Есть ли простой способ читать имена файлов в каталоге и добавлять в массив?"

Путь SPL с помощью DirectoryIterator :

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

И для полноты: вы также можете использовать glob :

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

Это вернет все файлы (но не папки), вы можете при необходимости адаптировать их.

Чтобы получить только имена файлов (вместо файлов с полным путем), просто добавьте:

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

Да: используйте scandir() . Если вам просто нужно имя файла без расширения, используйте basename() для каждого элемента массива, который вы получили из scandir() .

Это должно быть в состоянии сделать то, что вы ищете:

 // 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); 

Конечно … Я думаю, что это должно сработать …

 $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); 

Я думаю, это должно работать …

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

это должно работать, если вы хотите, чтобы любые файлы были исключены из массива, просто добавьте их в оператор if, то же самое для расширений файлов