163

.特定のディレクトリ(現在のディレクトリ) または..(親ディレクトリ)のすべてのサブディレクトリをファイルなしで取得し、各ディレクトリを関数で使用するにはどうすればよいですか?

4

16 に答える 16

232

オプション1:

glob()オプションでご利用いただけGLOB_ONLYDIRます。

オプション 2:

別のオプションはarray_filter、ディレクトリのリストをフィルタリングするために使用することです。ただし、以下のコードは、 のように名前にピリオドが含まれる有効なディレクトリをスキップすることに注意してください.config

$dirs = array_filter(glob('*'), 'is_dir');
print_r($dirs);
于 2010-03-26T14:58:34.287 に答える
174

GLOB を使用してディレクトリのみを取得する方法は次のとおりです。

$directories = glob($somePath . '/*' , GLOB_ONLYDIR);
于 2010-06-09T13:44:29.540 に答える
29

前の質問とほぼ同じです:

$iterator = new RecursiveIteratorIterator(
                new RecursiveDirectoryIterator($yourStartingPath), 
            RecursiveIteratorIterator::SELF_FIRST);

foreach($iterator as $file) {
    if($file->isDir()) {
        echo strtoupper($file->getRealpath()), PHP_EOL;
    }
}

strtoupperご希望の機能に置き換えてください。

于 2010-03-26T15:11:12.670 に答える
6

このコードを試してください:

<?php
$path = '/var/www/html/project/somefolder';

$dirs = array();

// directory handle
$dir = dir($path);

while (false !== ($entry = $dir->read())) {
    if ($entry != '.' && $entry != '..') {
       if (is_dir($path . '/' .$entry)) {
            $dirs[] = $entry; 
       }
    }
}

echo "<pre>"; print_r($dirs); exit;
于 2015-11-06T07:11:16.323 に答える
2
<?php
    /*this will do what you asked for, it only returns the subdirectory names in a given
      path, and you can make hyperlinks and use them:
    */

    $yourStartingPath = "photos\\";
    $iterator = new RecursiveIteratorIterator( 
        new RecursiveDirectoryIterator($yourStartingPath),  
        RecursiveIteratorIterator::SELF_FIRST);

    foreach($iterator as $file) { 
        if($file->isDir()) { 
            $path = strtoupper($file->getRealpath()) ; 
            $path2 = PHP_EOL;
            $path3 = $path.$path2;

            $result = end(explode('/', $path3)); 

            echo "<br />". basename($result );
        } 
    } 

    /* best regards,
        Sanaan Barzinji
        Erbil
    */
?>
于 2012-08-04T07:41:53.787 に答える
1

適切な方法

/**
 * Get all of the directories within a given directory.
 *
 * @param  string  $directory
 * @return array
 */
function directories($directory)
{
    $glob = glob($directory . '/*');

    if($glob === false)
    {
        return array();
    }

    return array_filter($glob, function($dir) {
        return is_dir($dir);
    });
}

ララベルにインスパイアされた

于 2016-06-01T22:55:42.010 に答える
0

glob() 関数を使用してこれを行うことができます。

ここにいくつかのドキュメントがあります: http://php.net/manual/en/function.glob.php

于 2015-04-16T14:49:42.743 に答える
-1

指定したディレクトリの下にあるすべてのファイルとフォルダーを検索します。

function scanDirAndSubdir($dir, &$fullDir = array()){
    $currentDir = scandir($dir);

    foreach ($currentDir as $key => $val) {
        $realpath = realpath($dir . DIRECTORY_SEPARATOR . $val);
        if (!is_dir($realpath) && $filename != "." && $filename != "..") {
            scanDirAndSubdir($realpath, $fullDir);
            $fullDir[] = $realpath;
        }
    }

    return $fullDir;
}

var_dump(scanDirAndSubdir('C:/web2.0/'));

サンプル :

array (size=4)
  0 => string 'C:/web2.0/config/' (length=17)
  1 => string 'C:/web2.0/js/' (length=13)
  2 => string 'C:/web2.0/mydir/' (length=16)
  3 => string 'C:/web2.0/myfile/' (length=17)
于 2015-11-05T17:09:26.140 に答える