39

globフォルダ内のすべてのファイルまたはすべてのディレクトリのみを検索できることを私は知っています:

echo "All files:\n";
$all = glob("/*");
var_dump($all);

echo "Only directories\n";
$dirs = glob("/*", GLOB_ONLYDIR);
var_dump($dirs);

しかし、1行のファイルだけを効率的に見つけるものは見つかりませんでした。

$files = array_diff(glob("/*"), glob("/*", GLOB_ONLYDIR));

うまく機能しますが、ディレクトリを2回読み取ります(2回目のブラウジングを高速化する最適化がいくつかある場合でも)。

4

7 に答える 7

58

私はついに解決策を見つけました:

echo "Only files\n";
$files = array_filter(glob("/*"), 'is_file');
var_dump($files);

ただし、注意してください。array_filterは数値キーを保持します。配列のインデックスを再作成する必要がある場合は、 array_valuesを使用してください。

于 2012-12-29T17:53:16.677 に答える
5

を使用GLOB_BRACEして、ドキュメントを既知のファイル拡張子のリストと照合できます。

$files = glob("/path/to/directory/*.{jpg,gif,png,html,htm,php,ini}", GLOB_BRACE);

参照: http://www.electrictoolbox.com/php-glob-find-files/

于 2014-06-10T14:20:59.743 に答える
-10
$all = glob("/*.*");

これにより、すべてが「。」でリストされます。ファイル名の後に. 基本的に、すべてのファイル。

于 2013-04-09T21:54:50.533 に答える