PHP文件列出了多个文件扩展名

use*_*147 48 php

这是我目前的代码:

$files = glob("*.jpg");
Run Code Online (Sandbox Code Playgroud)

这很好用.但是,我想列出其他图像类型,例如.png,gif等.

我可以帮助修改上面的代码以使其正常工作.我试过以下但没有成功:

$files = glob("*.jpg","*.png","*.gif");

$files = glob("*.jpg,*.png,*.gif);
Run Code Online (Sandbox Code Playgroud)

和其他变化......

Jer*_*oen 107

$files = glob("*.{jpg,png,gif}", GLOB_BRACE);
Run Code Online (Sandbox Code Playgroud)

  • 使用GLOB_BRACE关于逗号周围的空格时要小心:{jpg,png,gif}按预期工作,但{jpg,png,gif}带有前导空格,只会按预期匹配前者而不匹配后者. (12认同)
  • 只是一个抬头.这是区分大小写的,因此如果您使用.JPG的给定文件,它将无法工作.你可以使用`$ files = glob("*.{[jJ] [pP] [gG],[pP] [nN] [gG],[gG] [iI] [fF]}",GLOB_BRACE); (10认同)
  • @hidden-username 为什么要把事情复杂化呢?保持简单:`"*.{jpg,png,gif,JPG,PNG,GIF}"` (4认同)
  • @WackGet 因为 [jJ][pP][gG] 将捕获 Jpg、jPg、jpG、、JpG 和任何其他区分大小写的变体,而无需一一键入它们。 (2认同)

Dex*_*ter 6

2021 年 05 月

这只是@Jeroen 答案的扩展。

需要记住的事情

“标志”很重要

由于您使用的是大括号,因此请记住GLOB_BRACE这是必需的。如果没有该标志,您将得到一个空的项目数组

$files = glob("*.{jpg,png,gif}", GLOB_BRACE);
Run Code Online (Sandbox Code Playgroud)

排序

这也将帮助您按照您编写的方式对文件进行排序。
下面的排序基于大括号内扩展名的顺序。

$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
Run Code Online (Sandbox Code Playgroud)

+ 奖金

如果您必须列出所有文件但没有文件夹,您可以使用此

$files = glob("*.{*}", GLOB_BRACE);
Run Code Online (Sandbox Code Playgroud)