удалить всё что внутри папки не удаляя папку

Тема в разделе "Как сделать...", создана пользователем zilon, 28 янв 2014.

  1. zilon

    zilon

    Регистр.:
    30 июл 2011
    Сообщения:
    370
    Симпатии:
    147
    нашёл функцию удаления папки, но она стирает саму папку после удаления файлов и вложеных папок. Подскажите пожалуста как сделать чтоб он папку не удаляла. Вот код папка называется shablon

    PHP:
    $put dirname(__FILE__);
    $end $put.'\shablon';

    function 
    removeDirectory($dir) {
        if (
    $objs glob($dir."/*")) {
          foreach(
    $objs as $obj) {
            
    is_dir($obj) ? removeDirectory($obj) : unlink($obj);
          }
        }
        
    rmdir($dir);
      }

    removeDirectory($end);
     
  2. cooli0

    cooli0 Создатель

    Заблокирован
    Регистр.:
    27 янв 2014
    Сообщения:
    12
    Симпатии:
    2
    PHP:
    $put dirname(__FILE__);
    $end $put.'\shablon';

    function 
    removeDirectory($dir) {
        if (
    $objs glob($dir."/*")) {
          foreach(
    $objs as $obj) {
            
    is_dir($obj) ? removeDirectory($obj) : unlink($obj);
          }
        }
        
    $dir !== $end && rmdir($dir);
      }

    removeDirectory($end);
     
  3. zilon

    zilon

    Регистр.:
    30 июл 2011
    Сообщения:
    370
    Симпатии:
    147
    всё равно удаляет :nezn:
     
  4. cooli0

    cooli0 Создатель

    Заблокирован
    Регистр.:
    27 янв 2014
    Сообщения:
    12
    Симпатии:
    2
    в самом конце перед rmdir сделай echo $dir. Он тебе выведет список дирректорий/файлов которые он удаляет. Тебе надо сделать

    $dir != "последний из списка" && rmdir($dir);

    последний из списка - это по идее $end - но может он там как-то по другому отображается.
     
    zilon нравится это.
  5. zilon

    zilon

    Регистр.:
    30 июл 2011
    Сообщения:
    370
    Симпатии:
    147
    сделал проще :)

    PHP:
    $put dirname(__FILE__);
    $end $put.'\shablon';

    function 
    removeDirectory($dir) {
        if (
    $objs glob($dir."/*")) {
          foreach(
    $objs as $obj) {
            
    is_dir($obj) ? removeDirectory($obj) : unlink($obj);
          }
        }
        
    rmdir($dir);
      }

    removeDirectory($end);

    mkdir ($end);
     
  6. jDony

    jDony Создатель

    Регистр.:
    25 янв 2014
    Сообщения:
    41
    Симпатии:
    40
    Можно так:
    PHP:
    <?php

    $put 
    dirname(__FILE__);
    $end $put.'/dir';

    function 
    removeDirectory($dir$removeSelf false) {
        if (
    $objs glob($dir."/*")) {
          foreach(
    $objs as $obj) {
            
    is_dir($obj) ? removeDirectory($objtrue) : unlink($obj);
          }
        }
        if (
    $removeSelfrmdir($dir);
      }

    removeDirectory($end);
     
  7. esche

    esche

    Регистр.:
    9 авг 2009
    Сообщения:
    359
    Симпатии:
    243
    Разрешения не забудь на неё поставить нужные. Если сбросятся в "умолчательные", запись скриптами может быть запрещена.