Belirli bir dizindeki klasörleri listeleme için kurşun geçirmez yöntemi (PHP 4 uyumlu)

2 Cevap php

Ben belirli bir dizindeki tüm klasörler (non-recursive) listeleyen basit bir işlev için bir ihtiyaç var. Dizin her zaman (benim tema dizinin görüntüleri klasörü) aynı olacaktır.

Ben aşağıda işlevini kullanarak oldum, ama PHP sürümü olduğunda başarısız < 5.

Ben bir PHP version kontrol işlevi sarın varsayalım. Ben sadece ederken verimli, aynı zamanda mümkün olduğunca işlev olarak kurşun geçirmez yapmak için çalışıyorum.

Böyle ışık görevi vardır beri, ben PHP 5 gerektiren bu fonksiyon için overkill olduğunu düşünüyorum

Bu fonksiyon temanın görüntüleri dizini ayrıştırır ve orada bulduğu tüm klasörlerin bir dizi döndürür. Bu gerçekten o (ben PHP5 + gerektirir beri DirectoryIterator kullanarak overkill olduğunu düşünüyorum neden olan) yapması gereken bu. Ayrıca, function_exists testi çalışmıyor ...

    function get_dirs($path = '.') 
    {
        $dirs = array();
        if(function_exists('DirectoryIterator'))
        {
            foreach (new DirectoryIterator($path) as $file) 
            {
                if ($file->isDir() && !$file->isDot()) 
                {
                $dirs[] = $file->getFilename();
                }
            }
        } 
        else
        {
            //exception
            return array("theme1" => "theme1", "theme2" => "theme2", "theme3" => "theme3");
        }
    return $dirs;
    }

2 Cevap

PHP/4.0 ya da daha fazla:

<?php

$dh = opendir('/');
if($dh){
    while(($item = readdir($dh)) !== false){
        if( is_dir($dir . $item) ){
            echo $item . "\n";
        }
    }
    closedir($dh);
}

?>

PHP/4.3 ya da daha fazla:

<?php

foreach(glob('/*', GLOB_ONLYDIR) as $i){
    echo $i . "\n";
}

?>

dir dizin sınıf PHP 4 beri mevcut olmuştur, bu nedenle amaçlar için ideal olmalıdır.

Orada manuel sayfa üzerinde bazı iyi örnekler, bu yüzden onları burada çoğaltmak değil.