Листване само на суб директории

mhead

Registered
Здравейте,
Има ли начин да премахна листването на главната директория
значи
Код:
Dir 
Subdir
да направя така че да показва само Subdir-a

Код:
<?php
$dir = "./";
$iterator = new RecursiveIteratorIterator( 
new RecursiveDirectoryIterator($dir),  
RecursiveIteratorIterator::SELF_FIRST); 
foreach($iterator as $file) { 
if($file->isDir()) { 
$path = strtoupper($file->getRealpath()) ; 
echo ''.$path.'<br />';
} 
} 
?>
 
що просто не направиш така:
PHP:
function ListSubDirs($dir) {  
$handle=opendir($dir);

while (($file = readdir($handle))!==false) {
 if(is_dir($file))
   {
     echo "$file <br>"; // Twa e da gi pokazwa 
    }

}

closedir($handle);
}

тва е код за 5 мин .. няма и толкос .. много по-прост е .. и лесно се модифицира .. :)

PHP:
$dir = "/includes/";
echo ListSubDirs($dir);
 
Може да ползваш:

Ще те върне една директория на зад.
PHP:
dirname($path);


EDIT:

А всъщност ти искаш само да ти изкара последната директория, това става ето така:

PHP:
basename($path);

Но ако примерно във пътя е вкл. и някой файл, тоест:

localhost/folder/folder2/index.php

Тогава ще ти върне index.php, ти нежелаш това, а искаш да ти върне folder2, тогава го правиш така:

PHP:
basename(dirname($path));
 
Значи ето демо
идеята ми беше да не изкарва само първия ред кадето пише
Код:
D:\TEST2\MAINDIR

а да изкарва другите както са си
Код:
D:\TEST2\MAINDIR\SUBDIR1
D:\TEST2\MAINDIR\SUBDIR2
D:\TEST2\MAINDIR\SUBDIR3
 
ем за това ли говориш ?
<?php
$dir = "./";
$iterator = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($dir),
RecursiveIteratorIterator::SELF_FIRST);
foreach($iterator as $file) {
if($file->isDir()) {
$path = strtoupper($file->getRealpath()) ;
echo ''.$path.'<br />';
}
}
?>
 
Ами ето това ти е единия начин:

Тук правиш една проверка, ако не е равен на MAINDIR.

PHP:
$dir = "./";
$iterator = new RecursiveIteratorIterator( 
new RecursiveDirectoryIterator($dir),  
RecursiveIteratorIterator::SELF_FIRST); 
foreach($iterator as $file) { 
if($file->isDir()) { 
   $Base = basename($file->getRealpath());
   if($Base != 'MAINDIR') {
$path = strtoupper($file->getRealpath()) ; 
 
echo ''.$path.'<br />';
   }

} 
}


Това е другия вариант, горното правило ще важи за всички директории, не само за една. Тук е без въвеждане на кой директории. Аз ти предлагам да си направиш един масив и да си ги въведеш ръчно, разбира се ако директориите ще са статични.

PHP:
$dir = "./";
$iterator = new RecursiveIteratorIterator( 
new RecursiveDirectoryIterator($dir),  
RecursiveIteratorIterator::SELF_FIRST); 

$Bases = array();
foreach($iterator as $file) { 

    if($file->isDir()) { 
        
        $Base = basename(dirname($file->getRealpath()));
        $Bases[] = $Base; 
   }

} 
 

foreach($iterator as $file) { 
if($file->isDir()) { 
   $Base = basename($file->getRealpath());
   if(!in_array($Base, $Bases)) {
$path = strtoupper($file->getRealpath()) ; 
 
echo ''.$path.'<br />';
   }

} 
}
 
МНОГО ТИ БЛАГОДАРЯ !!!
стана перфектно с 2-рия начин
Това нещо ще ми послужи да си update-вам сайта а не да copy/paste сраницата всеки път в всички директории
Най-важното е че разбрах как срава :roll:
Ако можех щях да ти дам +5 ама мога само 1 :D
 

Back
Горе