2010-08-31 3 views
3

У меня есть массив $bundle, который хранит имена файлов и имена каталогов.PHP: перемещение каталогов с содержимым?

Я бегу через массив с циклом foreach, и я хочу переместить их внутри другого каталога. Поэтому я использую метод переименования, и он работает очень хорошо с JUST FILES.

Однако каталоги с другими файлами там не отвечают на метод rename().

$folder = 'files'; 
foreach ($bundle as $value) { 
    $ext = pathinfo($value, PATHINFO_EXTENSION); 
    if ($ext != "") { //if $value has no suffix it's a fil 
     rename(PATH . '/' .$value, $folder . '/' . $value); 
    } 

    if ($ext == "") { // it's a folder/directory 
     //rename doesn't work for directories with contents 
     //what method should i use here??? 
    } 

} 

Я знаю, что метод pathinfo() не самый лучший способ узнать, если это каталог или нет, но для моего маленького проекта это нормально. Мне просто нужно знать, как я могу перемещать любую директорию со всем содержимым в папку «файлы».

Благодарим за помощь.

ответ

4

Вам нужно будет получить все имена файлов в этом каталоге, используя glob или scandir. Затем вам придется перебирать их с помощью переименования и перемещать их.

другое Ваш вариант, если вы хост позволяет, чтобы использовать shell_exec и сделать mv для Linux или copy/xcopy для команды окон и переместить их таким образом. Если вы выберете маршрут exec, убедитесь, что вы сохранили ввод и т. Д., Чтобы предотвратить появление каких-либо плохих вещей.