下面是我目前的代码:
$files = glob("*.jpg");
这很好用。但是,我想列出其他的图像类型,比如png,gif等等。我可以请有一些帮助来修改上面的代码,让它工作。我已经尝试了以下没有成功:
$files = glob("*.jpg","*.png","*.gif"); $files = glob("*.jpg,*.png,*.gif);
还有其他的变化...
bf1o4zei1#
$files = glob("*.{jpg,png,gif}", GLOB_BRACE);
eulz3vhy2#
这只是@Jeroen答案的扩展。
由于您使用的是大括号,请记住GLOB_BRACE是必需的。
GLOB_BRACE
排序这也将帮助你排序的文件在你写的方式。下面的排序是基于花括号内的扩展名的顺序。
$files = glob("*.{jpg,png,gif}", GLOB_BRACE); xx.jpg xx.jpg xx.png xx.gif xx.gif $files = glob("*.{gif,jpg,png}", GLOB_BRACE); xx.gif xx.gif xx.jpg xx.jpg xx.png
如果您必须列出所有文件但不列出文件夹,则可以使用此
$files = glob("*.{*}", GLOB_BRACE);
k4emjkb13#
我的两点意见:
$availableImageFormats = [ "png", "jpg", "jpeg", "gif"]; $searchDir = /*yourDir*/; $imageExtensions = "{"; foreach ($availableImageFormats as $extension) { $extensionChars = str_split($extension); $rgxPartial = null; foreach ($extensionChars as $char) { $rgxPartial .= "[".strtoupper($char).strtolower($char)."]"; } $rgxPartial .= ","; $imageExtensions .= $rgxPartial; }; $imageExtensions .= "}"; glob($searchDir."/*.".$imageExtensions, GLOB_BRACE)
有了这个,你就可以创建一个数组的所有扩展,你正在寻找不用担心不适当的情况下使用。希望它有帮助
dvtswwa34#
我只是为了我自己的项目需要这个。我做了一个从数组到字符串的转换器。
function whitelistToBrace($whitelist) { $str = "{"; $whitelist = !empty($whitelist) ? $whitelist : ['*']; foreach($whitelist as $extension) { $str .= '*.' . strtolower($extension) . ','; }; $str = substr($str, 0, -1) . '}'; return $str; }
用法
$whitelist = [ 'png', 'jpg' ]; // glob('my/path/*.{*.png,*.jpg}', GLOB_BRACE); $glob = glob('my/path/' . whitelistToBrace($whitelist), GLOB_BRACE); print_r($glob);
hlswsv355#
我发现了一个比使用GLOB_BRACE简单得多的解决方案,它不区分大小写:
$files = array_filter(glob('path/*.*'), function ($filename) { return preg_match('/\.(jpe?g|png|gif)$/i', $filename); }); sort($files);
或者,您可以简单地这样做:
$files = preg_grep('/\.(jpe?g|png|gif)$/i', glob('path/*.*')); sort($files);
只是我的两分钱,希望它能帮助任何最终来到这里的人。
5条答案
按热度按时间bf1o4zei1#
eulz3vhy2#
2021年05月
这只是@Jeroen答案的扩展。
注意事项
'flag'很重要
由于您使用的是大括号,请记住
GLOB_BRACE
是必需的。排序
这也将帮助你排序的文件在你写的方式。
下面的排序是基于花括号内的扩展名的顺序。
+奖金
如果您必须列出所有文件但不列出文件夹,则可以使用此
k4emjkb13#
我的两点意见:
有了这个,你就可以创建一个数组的所有扩展,你正在寻找不用担心不适当的情况下使用。希望它有帮助
dvtswwa34#
我只是为了我自己的项目需要这个。我做了一个从数组到字符串的转换器。
用法
hlswsv355#
我发现了一个比使用GLOB_BRACE简单得多的解决方案,它不区分大小写:
或者,您可以简单地这样做:
只是我的两分钱,希望它能帮助任何最终来到这里的人。