如何从php中的所有文件的文件夹目录中只获取视频文件?

时间:2016-01-21 14:20:06

标签: php scandir

我有一些视频,图片和文字文件在"上传/视频/" DIR。 在这里,我使用var newEvent = new Event(e); newEvent.pageX = calcNewPageX(); 获取所有文件,但我只想要该文件夹中的视频。

示例代码:

scandir

获得结果:

$video_dir    = 'uploads/video/';
$video_array = scandir($video_dir);

unset($video_array[0]);
unset($video_array[1]);

echo "<pre>";
print_r($video_array);
echo "</pre>";

我只需要视频文件。删除文本,mp3,jpg等文件:

Array ( [2] => ADD.mp4 [3] => COO_Notes.txt [4] => Carefree.mp3 [5] => Circus Tent.mp3 [6] => Phen.mp4 [7] => REM.mp4 [8] => images (9).jpg [9] => images.jpg [10] => test.php ) 

感谢您的更新。

3 个答案:

答案 0 :(得分:4)

您可以使用glob()

<?php
foreach (glob("*.mp4") as $filename) {
    echo "$filename - Size: " . filesize($filename) . "\n";
}
# or:
$video_array = glob("*.mp4");
?>

为了获得多种格式,只需将扩展名放在花括号中并添加参数GLOB_BRACE

$video_array = glob('uploads/video/{*.mp4,*.flv,*.mov}', GLOB_BRACE);

在此处PHP.net查看。

答案 1 :(得分:2)

我相信函数pathinfo可以帮助你。 http://php.net/manual/en/function.pathinfo.php

<?php
$videos = array();
$video_ext = array('mp4', 'mpeg');
foreach ($video_array as $path) {
  if (in_array(pathinfo($path,  PATHINFO_EXTENSION), $video_ext)) {
  //less general, but will work if you know videos always end in mp4
  //if (pathinfo($path, PATHINFO_EXTENSION) == "mp4") {
    $videos[] = $path;
  }
}

答案 2 :(得分:2)

您可以使用mime_content_type检查文件类型:http://php.net/manual/en/function.mime-content-type.php

假设这将是:

$videos = array();
$dir = 'uploads';
$files = scandir($dir);
foreach($files as $file) {
   $filepath = $dir . '/' . $file;
   if(is_file($filepath)) {
       $contentType = mime_content_type($filepath);
       if(stripos($contentType, 'video') !== false) {
           $videos[] = $file;
       }
   }
}

这也可能不是很快,也许不会检测所有可能的(奇怪的)视频文件(因为它使用magic.mime)。但是这可能在没有文件扩展名的情况下工作,也会查看文件本身而不是文件名。