2013年6月12日水曜日

[PHP] ディレクトリ内のファイル一覧を取得する

良くある事なので調べる人も多いこのタイトル

例えば、こんなディレクトリに対してファイル一覧を取得する場合
/tmp
├ sample.txt
└ sample2.txt

調べるとこんなソースがヒットする。
<?php $dir = opendir( '/tmp' ); while( ( $file = readdir( $dir ) ) !== FALSE ){     echo '/tmp/'.$file."\n"; } closedir( $dir ); ?>
# 結果は以下のようになる
. .. sample.txt sample2.txt
参考:http://cos31.hatenablog.jp/entry/20071112/1194898338 こっちの場合、カレント(.)と相対パス(..)が取得されてしまうので、正規表現などでフィルタリングする必要がある。 今日、会社の同僚からもうちょいスッキリかける方法を教えてもらったのでメモ
<?php foreach( glob('/tmp/*') AS $file ){     echo $file."\n"; } ?>
# 結果は以下のようになる。
/tmp/sample.txt /tmp/sample2.txt
こんな便利な関数があるとは思わなかった。 簡単なパターンマッチにも対応しているので、/tmp/*.txt みたいな抽出も可能。 こちらは絶対パスで返ってくるのでファイル名だけを取得したいのであればbasenameを噛ませる必要があるけど。。。 どっちが使いやすいかは人それぞれだと思う。

0 件のコメント:

コメントを投稿