列出特定目录中文件夹的防弹方法(与PHP 4兼容)

列出特定目录中文件夹的防弹方法(与PHP 4兼容),php,filesystems,Php,Filesystems,我需要一个简单的函数来列出给定目录中的所有文件夹(非递归)。目录将始终相同(我的主题目录的images文件夹) 我一直在使用下面的函数,但是当PHP版本

我需要一个简单的函数来列出给定目录中的所有文件夹(非递归)。目录将始终相同(我的主题目录的images文件夹)

我一直在使用下面的函数,但是当PHP版本<5时它会失败

我想我可以在PHP版本检查中包装函数。我只是想让功能尽可能防弹,同时又高效

由于它的任务如此之轻,我认为要求PHP5对于这个函数来说是过分了

此函数解析主题的images目录,并返回在其中找到的所有文件夹的数组。这就是它真正需要做的一切(这就是为什么我认为使用DirectoryIterator是过分的,因为它需要PHP5+)。此外,函数_exists测试不起作用

    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;
    }
目录类从PHP4开始就可用了,因此对于您的目的来说应该是理想的

手册页面本身有一些很好的示例,因此我不会在这里重复这些示例。

目录类从PHP4开始就可用,因此对于您的目的来说应该是理想的

手册页面上有一些很好的示例,因此我不会在这里重复这些示例。

PHP/4.0或更高版本:

<?php

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

?>
<?php

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

?>

PHP/4.3或更高版本:

<?php

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

?>
<?php

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

?>

PHP/4.0或更高版本:

<?php

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

?>
<?php

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

?>

PHP/4.3或更高版本:

<?php

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

?>
<?php

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

?>

function_exists('DirectoryIterator')返回false,因为DirectoryIterator不是函数,而是类。您需要类_exists()。函数_exists('DirectoryIterator')返回false,因为DirectoryIterator不是函数,而是类。您需要类_exists()。