Opendir()を使用して、特定のフォルダー(つまり、/ www/site /)内のフォルダーのみを一覧表示したいと思います。 「。」でファイルをリストから除外したいLinuxフォルダーリストに表示される「..」フォルダー。これを行うにはどうすればよいですか?
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
_を更新して、出力したくないファイルまたはディレクトリの名前を含めます。
foreach(glob('directory/*', GLOB_ONLYDIR) as $dir) {
$dir = str_replace('directory/', '', $dir);
echo $dir;
}
GLOB_ONLYDIRで単にglobを使用し、結果のディレクトリをフィルタリングできます
function scandir_nofolders($d) {
return array_filter(scandir($d), function ($f) use($d) {
return ! is_dir($d . DIRECTORY_SEPARATOR . $f);
});
}
この関数は、反復またはどこかに格納できる配列を返します。これは、opendir
を使用するすべてのプログラマーの99.37%が望んでいることです。
フォルダのみを一覧表示(ディレクトリ):
<?php
$Mydir = ''; ### OR MAKE IT 'yourdirectory/';
foreach(glob($Mydir.'*', GLOB_ONLYDIR) as $dir) {
$dir = str_replace($Mydir, '', $dir);
echo $dir;
}
?>
glob('*')
関数でこれを試してください
<?php
$dirs = array_filter(glob('*'), 'is_dir');
$i = 1;
foreach ($dirs as $value) {
echo $i . '. <a href = "http://localhost/' . $value . '" target = "_blank">' . $value . '</a><br>';
$i++;
}
?>
上記のコードは、現在のディレクトリのフォルダーを一覧表示するために私のために機能し、同じブラウザーの新しいタブで各フォルダーを開くコードをさらに開発しました。これはディレクトリのみを示しています。
フォームで使用してフォルダ名のドロップダウンを作成することもできます(ここでは画像フォルダです)。画像をアップロードするユーザーが画像を正しいフォルダにプッシュすることを保証します:-)
<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>