从名称和扩展数组中查找文件

时间:2017-08-09 21:05:37

标签: php arrays file file-extension

现在这对我有用:

if (file_exists($filename . '.mp4')) {
    $filepath = "$filename.mp4";
} elseif (file_exists($filename . '.avi')) {
    $filepath = "$filename.avi";
} elseif (file_exists($filename . '.mkv')) {
    $filepath = "$filename.mkv";
}

我正在寻找一种从数组中过滤文件扩展名列表的简单方法。

2 个答案:

答案 0 :(得分:2)

试试这个

$extensions = ['mp4', 'avi', 'mkv'];     

foreach ($extensions as $extension) {
    $current = $filename . '.' . $extension;

    if (file_exists($current)) {
        $filepath = $current;

        break;
    }
}

答案 1 :(得分:0)

由于您的问题不清楚是否要查找第一个现有文件或所有现有文件,因此这里是一个查找解决方案的解决方案所有这些:

$extensions = ['mp4', 'avi', 'mkv'];     

$filepaths = array_filter(
    array_map(
        function ($extension) use ($filename) {
            return $filename . '.' . $extension;
        }, 
        $extensions
    ),
    function ($filepath) {
        return file_exists($filepath);
    }
);

或者使用foreach循环:

$extensions = ['mp4', 'avi', 'mkv'];     

$filepaths = [];

foreach ($extensions as $extension) {
    $current = $filename . '.' . $extension;

    if (!file_exists($current)) {
        continue;
    }

    $filepaths[] = $current;
}

供参考,见: