2

The statement below will load all images that do not begin with an underscore character...

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

I need to modify it so that it only loads images that DO BEGIN with an underscore.

Scott B
  • 38,833
  • 65
  • 160
  • 266

2 Answers2

7

Just remove the negation on the character set: [^_] becomes _:

if (!is_dir($file) && preg_match("/^_.*\.(bmp|jpeg|gif|png|jpg)$/i", $file)) 
Alex Brown
  • 41,819
  • 10
  • 94
  • 108
4

Try glob() to match file pathnames against a pattern, e.g.

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

to get all files starting with an underscore and ending in any of the extensions given in the curly braces.

Alternatively, have a look at fnmatch() to check a filename against a pattern.

In addition, if you want to make sure the images are really images, consider checking against the MimeType instead of or in addition to the extension.

Community
  • 1
  • 1
Gordon
  • 312,688
  • 75
  • 539
  • 559