Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > создание дерава папок


Автор: Kirill89 3.7.2009, 14:38
Доброе время суток.
Помогите с реализайией, задача такая - нужна функция, которая получает параметром $path
например '/testfilder1/testfolder2/testfolder3/index.php'
и создаёт все папки которые отсутствуют и этот файл.

Автор: lelik133 3.7.2009, 15:13
1. разбиваете строку explode по / в массив
2. проходитесь по массиву (кроме последнего элемента) и проверяете для каждого элемента есть ли такая папка, если нет создаете
3. для последнего элемента тоже самое, только проверяется существование файла

Автор: Kirill89 3.7.2009, 15:18
создаёт просто кучу папок в корне...
Код

$dir = explode('/',$path);
for($i=1,$j=count($dir);$i<$j-1;$i++)if(!file_exists($path))mkdir($dir[$i],0777);

Автор: lelik133 3.7.2009, 16:04
когда перемещаетсеь на уровень глубже это надо учитывать в file_exists и mkdir соответственно. Т.е. проверять testfilder1, testfilder1/testfolder2 и т.д.

Автор: Photon 6.7.2009, 14:54
Зачем такие сложности?

Код

    $path = '/Upload/Files/Test/3.txt';
    $path_arr = explode('/', $path);
    $dir = $_SERVER['DOCUMENT_ROOT'].substr($path, 1, strlen($path) - strlen($path_arr[count($path_arr) - 1]) - 1);
    @mkdir($dir);
    if (!file_exists($dir."/".$path_arr[count($path_arr) - 1])) {
     $fp = fopen($dir."/".$path_arr[count($path_arr) - 1], "a");
     fclose($fp);
    }


Только надо проконтролировать, что находится в $_SERVER['DOCUMENT_ROOT']. На моем хостинге в конце нет слэша, на других хостингах есть..

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)