PDA

View Full Version : سوال: تابعی برای پیمایش یه پوشه



idocsidocs
چهارشنبه 06 اردیبهشت 1391, 12:02 عصر
من یه پوشه دارم که داری پوشه ها و زیرپوشه های چند سطحی زیادی هست. تعداد پوشه های زیرمجموعه مشخص نیست.

همچنین فایلهای زیادی توی این پوشه ها هستن.

چطور می تونم همه این پوشه ها رو پیمایش کنم و اول فایلهای پوشه های موجود در آخرین سطح رو حذف کنم و بعد پوشه ها رو حذف کنم و به سطوح اول برسم و کلا همه فایلها و پوشه ها رو حذف کنم؟

آیا تابعی برای این کار ارائه شده؟

MMSHFE
چهارشنبه 06 اردیبهشت 1391, 13:07 عصر
<?php
function deltree($dir) {
echo '<b>'.$dir.'</b><br/>'.PHP_EOL;
if(file_exists($dir)) {
$files = scandir($dir);
unset($files[0], $files[1]);
foreach($files as $file) {
$file = $dir.'/'.$file;
echo $file.'<br/>'.PHP_EOL;
if(!is_dir($file)) {
unlink($file);
}
else {
deltree($file);
}
}
rmdir($dir);
}
}
?>

مثال:

deltree('myFolder');
موفق باشید.

idocsidocs
چهارشنبه 06 اردیبهشت 1391, 14:18 عصر
مهندس الان این تابع خود پوشه رو هم حذف می کنه.

چطور می شه کاری کرد که پوشه اصلی حذف نشه ولی محتویاتش به صورت کامل حذف بشن؟

MMSHFE
چهارشنبه 06 اردیبهشت 1391, 14:40 عصر
باید یکم کد رو تغییر بدیم. تا شب درستش میکنم.

MMSHFE
چهارشنبه 06 اردیبهشت 1391, 16:24 عصر
function deltree($dir, $is_root) {
echo '<b>'.$dir.'</b>'.PHP_EOL;
if(file_exists($dir)) {
$files = scandir($dir);
unset($files[0], $files[1]);
foreach($files as $file) {
$file = $dir.'/'.$file;
echo $file.''.PHP_EOL;
if(!is_dir($file)) {
unlink($file);
}
else {
deltree($file, false);
}
}
if(!$is_root) {
rmdir($dir);
}
}
}

نحوه استفاده:

deltree('myFolder', true);
موفق باشید.