php glob с подстановочным знаком, так как в нем перечислены все - PullRequest
0 голосов
/ 11 сентября 2018

У меня есть эти имена файлов, которые я хочу удалить

 Desert-100x100.jpg
     Desert-1024x768.jpg
 Desert-150x150.jpg 
  Desert-300x225.jpg

, но не хочу удалять имена файлов

  Desert-e1536645590208-300x217.jpg
   Desert-e1536645590208-768x555.jpg

Я использовал этот код globs, и я думаю, что он работаетожидаемый

   foreach(glob("Desert-*[100-9999]x[100-9999]*.{jpg,gif,png}", GLOB_BRACE) as $file){ 

  unlink ($file);


   }

, но моя проблема в том, что мы хотим исключить определенный тип файла или, более конкретно, файлы, которые содержат e1536645590208, которые являются динамическими, и у нас нет контроля, поэтому мы можем использовать стрипы и отфильтровывать те без e1536645590208, но я думаю,должны быть некоторые параметры глобуса, которые позволят нам отфильтровать результат без использования стрипов или других средств.

1 Ответ

0 голосов
/ 11 сентября 2018

Glob не понимает регулярное выражение, * означает 0 или более символов, это не квантификатор.

Используйте это

glob("Desert-{1,2,3,4,5,6,7,8,9}*x*.{jpg,gif,png}", GLOB_BRACE);

Или

glob("Desert-[1-9]*x*.{jpg,gif,png}", GLOB_BRACE);

Он выберет файлы, которые имеют цифру только после Desert-, поэтому он пропустит все файлы, которые имеют e.....

...