1

こんにちは、現在のディレクトリをループしてすべてのサブディレクトリを一覧表示するスクリプトを作成しています。すべて正常に動作していますが、_ で始まるフォルダーを除外することはできません。

<?php

$dir = __dir__;

// Open a known directory, and proceed to read its contents
if (is_dir($dir)) {
    if ($dh = opendir($dir)) {
        echo("<ul>");
    while (($file = readdir($dh)) !== false) {
        if ($file == '.' || $file == '..' || $file == '^[_]*$' ) continue;
        if (is_dir($file)) {
            echo "<li> <a href='$file'>$file</a></li>";
        }
    }
    closedir($dh);
}
}
?>
4

4 に答える 4

3

substr次のような[ドキュメント]を使用できます:

||  substr($file, 0, 1) === '_'
于 2012-05-08T06:29:39.433 に答える
0

より洗練されたソリューションは、SPLを使用することです。GlobIteratorが役に立ちます。各アイテムはSplFileInfoのインスタンスです。

<?php

$dir = __DIR__ . '/[^_]*';
$iterator = new GlobIterator($dir, FilesystemIterator::SKIP_DOTS);

if (0 < $iterator->count()) {
    echo "<ul>\n";
    foreach ($iterator as $item) {
        if ($item->isDir()) {
            echo sprintf("<li>%s</li>\n", $item);
        }
    }
    echo "</ul>\n";
}
于 2012-05-08T07:09:18.683 に答える