可能性のある複製:
ディレクトリ内の特定のファイルのPHPリスト
php scandir($ dir)を使用して画像のみを取得してください!
だから今私はディレクトリを持っていると私はファイルのリストを取得しています
$dir_f = "whatever/random/";
$files = scandir($dir_f);
ただし、これはディレクトリ内のすべてのファイルを取得します。最も効率的な方法で、.iniなどの特定の拡張子を持つファイルのみを取得するにはどうすればよいですか。
PHPには、必要なファイルのみをキャプチャするのに役立つ優れた機能があります。呼び出されるglob()
glob-パターンに一致するパス名を見つける
以下に使用例を示します-
_$files = array();
foreach (glob("/path/to/folder/*.txt") as $file) {
$files[] = $file;
}
_
参照 -
複数の拡張子を検索したい場合、 preg_grep()
がフィルタリングの代替手段です:
$files = preg_grep('~\.(jpeg|jpg|png)$~', scandir($dir_f));
glob
にも同様の追加構文がありますが。これは、さらに条件がある場合にほとんど意味があります。~i
大文字と小文字を区別しないフラグ、または結合リストをフィルタリングできます。
PHPの glob()
関数では、検索するパターンを指定できます。
GlobIterator
を使用して試すことができます
$iterator = new \GlobIterator(__DIR__ . '/*.txt', FilesystemIterator::KEY_AS_FILENAME);
$array = iterator_to_array($iterator);
var_dump($array)
<?php
foreach (glob("*.txt") as $filename) {
echo "$filename size " . filesize($filename) . "\n";
}
?>
これを試して
//path to directory to scan
$directory = "../file/";
//get all image files with a .txt extension.
$file= glob($directory . "*.txt ");
//print each file name
foreach($file as $filew)
{
echo $filew;
$files[] = $filew; // to create the array
}
正規表現はテストしていませんが、次のようなものです:
if ($handle = opendir('/file/path')) {
while (false !== ($entry = readdir($handle))) {
if (preg_match('/\.txt$/', $entry)) {
echo "$entry\n";
}
}
closedir($handle);
}