Удалить файлы, получающие имена из массива, не зная расширения

У меня есть массив, содержащий несколько имен файлов без расширений (ниже числа — это имена файлов):

[1] => 214
[2] => 12
[3] => 2763
[4] => 356
[5] => 87

Я хотел бы удалить эти файлы с сервера, не зная их расширений (которые могут быть .jpg .JPG .GIF .jpeg и т. д.).

Я пытался использовать GLOB, но я не понимаю, как научить PHP использовать подстановочные знаки и в то же время получить имя файлов из массива.


person Nicero    schedule 11.12.2013    source источник
comment
Можете ли вы показать код, который вы пытались?   -  person tptcat    schedule 11.12.2013
comment
Очевидно, но если у вас есть 3 файла с одинаковым именем, но разными расширениями, вы удалите их все.   -  person Nanne    schedule 11.12.2013
comment
Имена файлов соответствуют уникальным идентификаторам базы данных.   -  person Nicero    schedule 11.12.2013


Ответы (1)


Предполагая, что $names - это ваш массив:

$path = "../pictures/";
foreach ($names as $name) {
  foreach (glob($path . $name . '*') as $filename) {
    unlink(realpath($filename));
  }
}
person zavg    schedule 11.12.2013
comment
Извините, но $filename пуст. Мой массив называется $orphans, print_r($orphans) подтверждает, что в нем есть данные. Я изменил ваши $names на $orphans, но $filename пуст. - person Nicero; 11.12.2013
comment
Опубликованный мной скрипт предполагает, что файлы, которые вы собираетесь удалить, находятся в том же каталоге, что и ваш PHP-скрипт. Если нет, вы должны добавить путь к каталогу (foreach($PATH.glob($name.'*') as $filename)). - person zavg; 11.12.2013
comment
Жаль пока пусто. Не знаю почему. Скрипт в /php, удаляемый файл в /pictures. Я добавил путь: foreach("../pictures/".glob($name."*") as $filename), а затем unlink("../pictures/".$filename), но это не работает. - person Nicero; 11.12.2013
comment
@Nicero Извините, в моем комментарии была глупая опечатка. Я обновил сообщение с правильным кодом, используя путь. - person zavg; 11.12.2013