Вопрос:

Создание файлов и папок рекурсивно

php

17555 просмотра

3 ответа

4224 Репутация автора

Я получил массив, содержащий пути и имена файлов

['css/demo/main.css', 'home.css', 'admin/main.css','account']

Я хочу создать эти файлы и папки, если они еще не существуют. Перезапишите их, если они уже существуют.

Автор: angry kiwi Источник Размещён: 11.07.2011 01:27

Ответы (3)


1 плюс

18859 Репутация автора

<?php
  function mkpath($path)
  {
    if(@mkdir($path) or file_exists($path)) return true;
    return (mkpath(dirname($path)) and mkdir($path));
  }
?>

Это делает пути рекурсивными.

Автор: spraff Размещён: 11.07.2011 01:30

23 плюса

13806 Репутация автора

Решение

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

Создать каталог рекурсивно просто:

mkdir(dirname($path), 0755, true); // $path is a file
mkdir($path, 0755, true);          // $path is a directory

0755это выражение разрешения файла, вы можете прочитать об этом здесь: http://ch.php.net/manual/en/function.chmod.php

Автор: Philippe Gerber Размещён: 11.07.2011 02:06

1 плюс

11 Репутация автора

Я только что использовал простой способ взорвать строку и перестроить и проверить, является ли файл или каталог

public function mkdirRecursive($path) {


    $str = explode(DIRECTORY_SEPARATOR, $path);
    $dir = '';
    foreach ($str as $part) {
        $dir .= DIRECTORY_SEPARATOR. $part ;
        if (!is_dir($dir) && strlen($dir) > 0 && strpos($dir, ".") == false) {
            mkdir($dir , 655);
        }elseif(!file_exists($dir) && strpos($dir, ".") !== false){
           touch($dir);
        }
    }
}
Автор: Rodrigo Manara Размещён: 22.09.2017 10:09
Вопросы из категории :
32x32