web-dev-qa-db-ja.com

PHP opendir()でフォルダのみを一覧表示する

Opendir()を使用して、特定のフォルダー(つまり、/ www/site /)内のフォルダーのみを一覧表示したいと思います。 「。」でファイルをリストから除外したいLinuxフォルダーリストに表示される「..」フォルダー。これを行うにはどうすればよいですか?

15
Jeff Thomas

readdir()のPHPドキュメント を確認してください。これの例が含まれています。

完全を期すために:

_<?php
if ($handle = opendir('.')) {
    $blacklist = array('.', '..', 'somedir', 'somefile.php');
    while (false !== ($file = readdir($handle))) {
        if (!in_array($file, $blacklist)) {
            echo "$file\n";
        }
    }
    closedir($handle);
}
?>
_

単にopendir('.')をディレクトリに変更します。つまり、opendir('/www/sites/')に変更し、_$blacklist_を更新して、出力したくないファイルまたはディレクトリの名前を含めます。

18
Jason McCreary
foreach(glob('directory/*', GLOB_ONLYDIR) as $dir) {
    $dir = str_replace('directory/', '', $dir);
    echo $dir;
}

GLOB_ONLYDIRで単にglobを使用し、結果のディレクトリをフィルタリングできます

18
StanleyD
function scandir_nofolders($d) {
   return array_filter(scandir($d), function ($f) use($d) {
       return ! is_dir($d . DIRECTORY_SEPARATOR . $f);
   });
}

この関数は、反復またはどこかに格納できる配列を返します。これは、opendirを使用するすべてのプログラマーの99.37%が望んでいることです。

8
phihag

フォルダのみを一覧表示(ディレクトリ):

<?php
$Mydir = ''; ### OR MAKE IT 'yourdirectory/';

foreach(glob($Mydir.'*', GLOB_ONLYDIR) as $dir) {
    $dir = str_replace($Mydir, '', $dir);
    echo $dir;
}
?>
6
T.Todua

glob('*')関数でこれを試してください

    <?php
    $dirs = array_filter(glob('*'), 'is_dir');
    $i = 1;
    foreach ($dirs as $value) {
        echo $i . '. &nbsp; <a href = "http://localhost/' . $value . '" target = "_blank">' . $value . '</a><br>';
        $i++;
    }
    ?>

上記のコードは、現在のディレクトリのフォルダーを一覧表示するために私のために機能し、同じブラウザーの新しいタブで各フォルダーを開くコードをさらに開発しました。これはディレクトリのみを示しています。

2

フォームで使用してフォルダ名のドロップダウンを作成することもできます(ここでは画像フォルダです)。画像をアップロードするユーザーが画像を正しいフォルダにプッシュすることを保証します:-)

<select name="imgfolder">
    <option value="genimage">General Image</option>
    <?php
    $Mydir = '../images/'; //  use 'anydirectory_of_your_choice/';

    foreach(glob($Mydir.'*', GLOB_ONLYDIR) as $dir) {
    $dirname =  basename($dir) ;
    echo '<option value="' . $dirname . '">' . $dirname . '</option>'  ; 
    }
    ?>
    </select>
1
Muralikrishnan