glob
(PHP 4 >= 4.3.0, PHP 5)
glob — パターンにマッチするパス名を探す
説明
array glob
( string
$pattern
[, int $flags = 0
] )
glob() 関数は libc の glob()
関数で使われるルールに基づいて
pattern にマッチする全てのパス名を検索します。
ルールは、一般のシェルで使われるルールと似ています。
パラメータ
-
pattern -
パターン。チルダの展開やパラメータ置換は行いません。
-
flags -
有効なフラグは次のとおりです。
-
GLOB_MARK- 各ディレクトリにスラッシュを追加します -
GLOB_NOSORT- ディレクトリに存在するファイルを返します (ソートはされません) -
GLOB_NOCHECK- 検索パターンにマッチするファイルが見つからない場合に、 検索パターン自身を返します -
GLOB_NOESCAPE- バックスラッシュによるメタ文字のクォートを行いません -
GLOB_BRACE- {a,b,c} を展開し「a」、「b」あるいは「c」のいずれかにマッチさせます -
GLOB_ONLYDIR- パターンにマッチするディレクトリのみを返します -
GLOB_ERR- (ディレクトリが読めないなどの) 読み込みエラー時に停止します。デフォルトではエラーは無視されます。
-
返り値
マッチするファイル/ディレクトリを含む配列を返します。
マッチするファイルがなかった場合には空の配列、
そして失敗した場合には FALSE を返します。
注意:
システムによっては、何もマッチしなかった場合とエラーが発生した場合を区別できないものもあります。
変更履歴
| バージョン | 説明 |
|---|---|
| 5.1.0 |
GLOB_ERR が追加されました。
|
| 4.3.3 |
GLOB_ONLYDIR が、
Windows やその他の GNU C ライブラリを使用しないシステムでも利用できるようになりました。
|
例
例1 glob() が opendir() と関連する関数群の代替策になるかを示す簡便な方法
<?php
foreach (glob("*.txt") as $filename) {
echo "$filename size " . filesize($filename) . "\n";
}
?>
上の例の出力は、 たとえば以下のようになります。
funclist.txt size 44686 funcsummary.txt size 267625 quickref.txt size 137820
注意
注意: この関数では、 リモートファイル を 使用することはできません。これは、処理されるファイルがサーバーの ファイルシステムによりアクセスできる必要があるためです。
注意: この関数が使用できないシステムも存在します (例: 昔の Sun OS など)。
注意:
GLOB_BRACEフラグは、Solaris などの非 GNU システムでは動作しないことがあります。
参考
- opendir() - ディレクトリハンドルをオープンする
- readdir() - ディレクトリハンドルからエントリを読み込む
- closedir() - ディレクトリハンドルをクローズする
- fnmatch() - ファイル名がパターンにマッチするか調べる