现在这对我有用:
if (file_exists($filename . '.mp4')) {
$filepath = "$filename.mp4";
} elseif (file_exists($filename . '.avi')) {
$filepath = "$filename.avi";
} elseif (file_exists($filename . '.mkv')) {
$filepath = "$filename.mkv";
}
我正在寻找一种从数组中过滤文件扩展名列表的简单方法。
答案 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;
}
供参考,见: