esa*_*wan 38 php file-extension directory-structure scandir image-file
有没有什么办法让仅与扩展的图像jpeg,png,gif等同时使用
$dir = '/tmp';
$files1 = scandir($dir);
Run Code Online (Sandbox Code Playgroud)
Gor*_*don 85
您可以使用 glob
$images = glob('/tmp/*.{jpeg,gif,png}', GLOB_BRACE);
Run Code Online (Sandbox Code Playgroud)
如果您需要这是不区分大小写的,你可以使用一个DirectoryIterator结合一个RegexIterator 或合格的结果scandir,以array_map和使用过滤任何多余的扩展回调.无论您使用strpos,fnmatch或者pathinfo获得延期是由你.
小智 35
实际问题是使用scandir,答案最终以glob形式出现.blob相当重,两者都有很大差异.使用以下代码可以使用scandir完成相同的过滤:
$images = preg_grep('~\.(jpeg|jpg|png)$~', scandir($dir_f));
Run Code Online (Sandbox Code Playgroud)
我希望这会对某人有所帮助.
Jos*_*iah 14
我会遍历文件并查看其扩展名:
$dir = '/tmp';
$dh = opendir($dir);
while (false !== ($fileName = readdir($dh))) {
$ext = substr($fileName, strrpos($fileName, '.') + 1);
if(in_array($ext, array("jpg","jpeg","png","gif")))
$files1[] = $fileName;
}
closedir($dh);
Run Code Online (Sandbox Code Playgroud)
Mad*_*ota 10
这是获取图像的简单方法.适用于PHP> = 5.2版本.扩展集合是小写的,因此将循环中的文件扩展名设置为小写使其不区分大小写.
// image extensions
$extensions = array('jpg', 'jpeg', 'png', 'gif', 'bmp');
// init result
$result = array();
// directory to scan
$directory = new DirectoryIterator('/dir/to/scan/');
// iterate
foreach ($directory as $fileinfo) {
// must be a file
if ($fileinfo->isFile()) {
// file extension
$extension = strtolower(pathinfo($fileinfo->getFilename(), PATHINFO_EXTENSION));
// check if extension match
if (in_array($extension, $extensions)) {
// add to result
$result[] = $fileinfo->getFilename();
}
}
}
// print result
print_r($result);
Run Code Online (Sandbox Code Playgroud)
我希望如果您想要不区分大小写和仅图像扩展,这将非常有用.