Мне нравится использовать PHP для получения всех имен файлов в каталоге, за исключением того, что имя файла содержит определенное слово, например «thumbnail».
Вот как я получаю все имена файлов изображений:
$images = glob($imagesDir . $albumName . '/' . '*.{jpg,jpeg,png,gif}', GLOB_BRACE);
Поэтому я попробовал:
$images = glob($imagesDir . $albumName . '/' . '^(?!thumbnail$).*.{jpg,jpeg,png,gif}', GLOB_BRACE);
Видимо, он ничего не вернет. Я не знаком с регулярным выражением в 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; });
Кроме того, мои самые искренние извинения за то, что первая часть моей рифмы ответа больше, чем предполагалось.