ФорумПрограммированиеPHP для идиотов → Удаление по расширению из каталога

Удаление по расширению из каталога

  • exploden

    Сообщения: 81 Репутация: N Группа: Кто попало

    Spritz 11 июня 2008 г. 23:41

    Добрый день,
    подскажите, как мне из каталога, допустим, /images/ на php
    найти все файлы с расширением .GIF и удалить только их ?
  • Trej Gun

    Сообщения: 5305 Репутация: N Группа: в ухо

    Spritz 11 июня 2008 г. 23:46, спустя 5 минут 28 секунд


    if ($handle = opendir('.')) {
    while (false !== ($file = readdir($handle)))
    if ($file != "." && $file != "..")
    if (false !== strpos($file, '.gif'))
    unlink($file);
    closedir($handle);
    }
  • sap

    Сообщения: 2701 Репутация: N Группа: Кто попало

    Spritz 11 июня 2008 г. 23:55, спустя 8 минут 38 секунд

    CTAPbIu_MABP, а если файл будет называться my.gif.jpg? =))
  • exploden

    Сообщения: 81 Репутация: N Группа: Кто попало

    Spritz 11 июня 2008 г. 23:57, спустя 2 минуты 33 секунды

    CTAPbIu_MABP, сенкс! а можно небольшой комментарий к нижеуказанным строкам, плз ?
    opendir('.') - я понимаю, туда адрес, типа /images
    а тут как быть?
    $file != "." && $file != ".." ?
    а если файл будет называться my.gif.jpg?
    а кто его так назовет ? )
  • sap

    Сообщения: 2701 Репутация: N Группа: Кто попало

    Spritz 12 июня 2008 г. 0:03, спустя 5 минут 23 секунды

    opendir('.') - я понимаю, туда адрес, типа /images

    Да.

    $file != "." && $file != ".." ? - сюда наверно .gif надо вписать, а во второй?

    . — это корень, .. — родительский каталог. Да, это тоже входит в список файлов. Ниче вписывать сюда не надо, естественно.

    а кто его так назовет ? )

    Хз =) Я бы все равно прег_матч заюзал.
  • exploden

    Сообщения: 81 Репутация: N Группа: Кто попало

    Spritz 12 июня 2008 г. 0:08, спустя 5 минут 13 секунд

    Тоесть получается что-то на подобии:

    $dir=getenv("DOCUMENT_ROOT").'/test/';
    if ($handle = opendir($dir)) {
    while (false !== ($file = readdir($handle)))
    if ($file != "." && $file != "..")
    if (false !== strpos($file, '.gif'))
    unlink("$dir$file");
    closedir($handle);
    }
    удаляет не только .gif, но и .gif1, .gif123 etc. но работает =) огромное сенкс!
  • exploden

    Сообщения: 81 Репутация: N Группа: Кто попало

    Spritz 12 июня 2008 г. 0:20, спустя 11 минут 58 секунд

    А как подсчитать количество этих .gif файлов в катаге и выдать результат в виде цифр ?
  • Trej Gun

    Сообщения: 5305 Репутация: N Группа: в ухо

    Spritz 12 июня 2008 г. 1:02, спустя 41 минуту 53 секунды

    sap, хз это не мои проблемы, я тебе больше скажу нормальный файл img.GIF тоже не удалиться

    по поводу регулярок


    if(preg_match("/\.gif$/i", $file))


    ° Exploden °, вместо

    if (false !== strpos($file, '.gif'))
  • Timur

    Сообщения: 1068 Репутация: N Группа: Джедаи

    Spritz 12 июня 2008 г. 3:32, спустя 2 часа 30 минут 40 секунд

  • kendo

    Сообщения: 446 Репутация: N Группа: Адекваты

    Spritz 12 июня 2008 г. 6:42, спустя 3 часа 9 минут 22 секунды

    Да, кстати, с регистром придется тоже помучаться. На win-системах это одинаковые файлы (GIF и gif), но на *nix системах - они разные (насколько я знаю).
    Да, кстати, функция scandir() работает быстрее, чем while readdir ;)
  • exploden

    Сообщения: 81 Репутация: N Группа: Кто попало

    Spritz 12 июня 2008 г. 9:42, спустя 3 часа 40 секунд

    ок,
    А как подсчитать количество этих .gif файлов в катаге и выдать результат в виде цифр ?
  • sap

    Сообщения: 2701 Репутация: N Группа: Кто попало

    Spritz 12 июня 2008 г. 10:07, спустя 24 минуты 17 секунд

    if ($handle = opendir('.')) {
    $i = 0;
    while (false !== ($file = readdir($handle)))
    if ($file != "." && $file != "..")
    if (false !== strpos($file, '.gif'))
    $i++;
    closedir($handle);
    echo $i;
    }
  • exploden

    Сообщения: 81 Репутация: N Группа: Кто попало

    Spritz 12 июня 2008 г. 10:18, спустя 11 минут 32 секунды

    sap, ну что я без Вас делал-бы!! =) Спасибо.

Пожалуйста, авторизуйтесь, чтобы написать комментарий!