web-dev-qa-db-ja.com

ディレクトリ内の各ファイルのループコード

ループしたい写真のディレクトリがあり、ファイルの計算を行います。単に睡眠不足かもしれませんが、どのようにしてPHPを使用して特定のディレクトリを調べ、何らかのforループを使用して各ファイルをループしますか?

ありがとう!

96
Chiggins

scandir

$files = scandir('folder/');
foreach($files as $file) {
  //do your work here
}

または glob は、ニーズに合わせてさらに改善される場合があります。

$files = glob('folder/*.{jpg,png,gif}', GLOB_BRACE);
foreach($files as $file) {
  //do your work here
}
248
Emil Vikström

DirectoryIterator クラスを確認してください。

そのページのコメントの1つから:

// output all files and directories except for '.' and '..'
foreach (new DirectoryIterator('../moodle') as $fileInfo) {
    if($fileInfo->isDot()) continue;
    echo $fileInfo->getFilename() . "<br>\n";
}

再帰バージョンは RecursiveDirectoryIterator です。

58
squirrel

関数を探します glob()

<?php
$files = glob("dir/*.jpg");
foreach($files as $jpg){
    echo $jpg, "\n";
}
?>
8
fvox

試す GLOB()

$dir = "/etc/php5/*";  

// Open a known directory, and proceed to read its contents  
foreach(glob($dir) as $file)  
{  
    echo "filename: $file : filetype: " . filetype($file) . "<br />";  
}  
3
Phill Pafford

Foreachループでglob関数を使用して、オプションが何であれ実行します。また、次の例でfile_exists関数を使用して、先に進む前にディレクトリが存在するかどうかを確認しました。

$directory = 'my_directory/';
$extension = '.txt';

if ( file_exists($directory) ) {
   foreach ( glob($directory . '*' . $extension) as $file ) {
      echo $file;
   }
}
else {
   echo 'directory ' . $directory . ' doesn\'t exist!';
}
3
Jake