PHP历理 获取指定目录下所有MP3文件的名称(不带扩展名)
<?php
session_start();
define('CHAOYI',true);
require $_SERVER['DOCUMENT_ROOT'].'/_/_php/data/database.php';
require ROOT.'_php/data/common.php';
require ROOT.'_php/data/config.php';
/**
* 获取指定目录下所有MP3文件的名称(不带扩展名)
*
* @param string $directory 目录路径
* @return array<string> MP3文件名数组(不含扩展名)
* @throws InvalidArgumentException 当目录不存在、不可读或不是有效目录时抛出异常
*/
function getMp3Filenames(string $directory): array{
// 规范化目录路径
$directory = rtrim(realpath($directory), DIRECTORY_SEPARATOR);
// 验证目录有效性
if (!is_dir($directory) || !is_readable($directory)) {
throw new InvalidArgumentException("指定的目录 '{$directory}' 不存在或不可读");
}
$mp3Files = [];
// 使用RecursiveDirectoryIterator遍历目录
$iterator = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($directory, RecursiveDirectoryIterator::SKIP_DOTS),
RecursiveIteratorIterator::LEAVES_ONLY
);
// 过滤MP3文件
$mp3Filter = new RegexIterator(
$iterator,
'/^.+\.mp3$/i', // 不区分大小写的MP3文件匹配
RegexIterator::GET_MATCH
);
// 提取文件名(不含扩展名)
foreach ($mp3Filter as $filePath) {
$fileInfo = new SplFileInfo($filePath[0]);
$mp3Files[] = $fileInfo->getBasename('.mp3');
}
return $mp3Files;
}
var_dump(getMp3Filenames(ROOT.'vod/pinyin/B/ba/'));
mysqli_close($conn);
exit;
效果图:


浙公网安备 33010602011771号