Как использовать PHP для получения всех имен файлов изображений, кроме содержащихся определенных слов?

Мне нравится использовать PHP для получения всех имен файлов в каталоге, за исключением того, что имя файла содержит определенное слово, например «thumbnail».

Вот как я получаю все имена файлов изображений:

$images = glob($imagesDir . $albumName . '/' . '*.{jpg,jpeg,png,gif}', GLOB_BRACE); 

Поэтому я попробовал:

 $images = glob($imagesDir . $albumName . '/' . '^(?!thumbnail$).*.{jpg,jpeg,png,gif}', GLOB_BRACE); 

Видимо, он ничего не вернет. Я не знаком с регулярным выражением в PHP. Я сделал что-то не так?

Solutions Collecting From Web of "Как использовать PHP для получения всех имен файлов изображений, кроме содержащихся определенных слов?"

Используя preg_grep() вы можете использовать регулярное выражение для исключения файлов, содержащих «миниатюру».

 $images = array_values(preg_grep('/^(?!.*thumbnail).*$/', glob($imagesDir . $albumName . '/' . '*.{jpg,jpeg,png,gif}', GLOB_BRACE))); 

Регулярные выражения, которые соответствуют только строкам, не содержащим слов, могут быть немного сложными и часто неэффективными. Использование комбинации регулярных выражений и PHP может быть лучшим вариантом для вас. Что-то вроде этого должно делать:

 $images = glob($imagesDir . $albumName . '/' . '*.{jpg,jpeg,png,gif}', GLOB_BRACE); $images = array_filter($images, function($s) { return strpos($s,'thumbnail') === false; }); 

Кроме того, мои самые искренние извинения за то, что первая часть моей рифмы ответа больше, чем предполагалось.