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;

效果图:

posted @ 2025-06-02 18:22  onestopweb  阅读(21)  评论(0)    收藏  举报