
PHP ファイル内から、include() とかじゃなくてディレクトリの一覧を取得したり、
ファイルの一覧を取得したりする方法です。
この記事では readdir() でファイルを読み込んでいますが、PHP 5.x な人は、scandir() を使った方が良いみたいです。
関連記事:PHP5 で scandir() を使ってファイル(ディレクトリ)を読み込んでみた
PHP 4.x な人は、この記事通り readdir() を使ってみてください。
手順としては、
- ディレクトリハンドラを作成( opendir()関数 )
- ハンドラをループで回してファイル(ディレクトリ)を取得( readdir()関数 )
- それぞれのファイル(ディレクトリ)に対する処理
- ハンドラを閉じる( closedir()関数 )
と、いたって単純。
これだけ。
注意点としては、ファイル/ディレクトリを取得する readdir() の WHILE 文で、
while( $file_name = readdir( $files ) ) { -- 処理する内容 -- }
とループを回すのはダメなこと。ディレクトリ名が「0(ゼロ)」とかだった場合に、
FALSE と判定されちゃうからちゃんと動かない。
なので明示的に、
while( false !== ($file_name = readdir( $files ) ) ) { -- 処理する内容 -- }
と、真偽判定しましょう。
参考:PHP: opendir – Manual
参考:PHP: readdir – Manual
参考:PHP: closedir – Manual
ちなみに、PHP5 では、scandir() という同じような機能を持った関数が使えます。使い方によっては、scandir() の方が便利かもしれません。
関連記事:PHP5 で scandir() を使ってファイル(ディレクトリ)を読み込んでみた
順番に処理をする
readdir() の読み込み順序はバラバラです。例えばファイルに連番が付いていて、順序通りにファイル処理をしたい場合は、一旦配列に格納して、配列をソートしてから処理する必用があります。
参考:PHP: 配列のソート – Manual
でわでわ。