正则表达式帮助:匹配以下划线开头的任何图像文件

时间:2010-01-26 13:31:20

标签: php regex

下面的语句将加载所有不以下划线字符开头的图像...

if (!is_dir($file) && preg_match("/^[^_].*\.(bmp|jpeg|gif|png|jpg)$/i", $file)) 

我需要修改它,以便它只加载带有下划线的DO BEGIN图像。

2 个答案:

答案 0 :(得分:7)

只需删除字符集上的否定:[^_]变为_

if (!is_dir($file) && preg_match("/^_.*\.(bmp|jpeg|gif|png|jpg)$/i", $file)) 

答案 1 :(得分:4)

尝试glob()将文件路径名与模式匹配,例如

glob('_*.{jpg,jpeg,gif,png,bmp}', GLOB_BRACE);

获取以下划线开头并以花括号中给出的任何扩展名结尾的所有文件。

或者,查看fnmatch()以检查模式的文件名。

此外,如果您想确保图片确实是图片,请考虑checking against the MimeType而不是扩展名。