Есть несколько способов сделать это.
Вы пробовали glob () ?:
$files = glob("{$picsDir}/*.{gif,jpeg,jpg,png}", GLOB_BRACE);
Рассматривали ли вы pathinfo () ?:
$info = pathinfo($file);
switch(strtolower($info['extension'])) {
case 'jpeg':
case 'jpg':
case 'gif':
case 'png':
$files[] = $file;
break;
}
Если вы настаиваете на использовании регулярного выражения, нет необходимости сопоставлять все имя файла, только расширение. Используйте маркер $
, чтобы соответствовать концу строки, и используйте флаг i
, чтобы обозначать регистр нечувствительность Кроме того, не забудьте использовать разделитель в своем выражении, в моем случае "%":
$rex = '%\.(gif|jpe?g|png)$%i';