PHPのglob://ストリームラッパーとは?使い方とフラグ一覧をわかりやすく解説
はじめに
glob:// ストリームラッパーは、PHP 5.3.0以降のすべてのバージョンで利用できます。指定されたパターンに一致するパス名を検索するために使われる仕組みです。同じような目的を持つものとして、PHPのファイルシステム関数である glob() 関数があり、こちらはlibcのglob()の規則に従って動作します。
glob()関数とglob://ストリームラッパーは似た用途で使えますが、後者はDirectoryIteratorなどのイテレータクラスと組み合わせてオブジェクト指向的にディレクトリを走査できる点が特徴です。
パラメータ
特殊文字
- * − 0個以上の任意の文字に一致します。
- ? − 任意の1文字にちょうど一致します。
- [...] − 文字グループの中からいずれか1文字に一致します。先頭が「!」の場合は、グループに含まれない文字に一致します。
- \ − 直後の文字をエスケープします。ただし、GLOB_NOESCAPE フラグが指定されている場合はこの限りではありません。
利用できるフラグ
- GLOB_MARK − 返される各ディレクトリにスラッシュ(Windowsの場合はバックスラッシュ)を追加します。
- GLOB_NOSORT − ディレクトリ内に出現した順序のままファイルを返します(ソートなし)。このフラグを指定しない場合、パス名はアルファベット順にソートされます。
- GLOB_NOCHECK − 一致するファイルが見つからなかった場合に、検索パターンそのものを返します。
- GLOB_NOESCAPE − バックスラッシュによるメタ文字のエスケープを無効にします。
- GLOB_BRACE − {a,b,c} を展開し、「a」「b」「c」のいずれかに一致させます。
- GLOB_ONLYDIR − パターンに一致するディレクトリのみを返します。
- GLOB_ERR − 読み込みエラー(読み取り不可のディレクトリなど)が発生した時点で処理を停止します。デフォルトではエラーは無視されます。
使用例
glob() 関数を使用する場合
<?php
foreach (glob("test/*.php") as $filename) {
echo "$filename size " . filesize($filename) . "\n";
}
?>
glob:// ストリームラッパーを使用する場合
<?php
$it = new DirectoryIterator("glob://test/*.php");
foreach($it as $f) {
echo "File name: " . $f->getFilename() . " size: " . $f->getSize() . "\n";
}
?>
どちらのスクリプトも、test サブディレクトリ内にある拡張子が .php のファイルについて、そのファイル名とサイズを表示します。glob()関数は手軽に関数として呼び出せる一方、glob://ストリームラッパーはDirectoryIteratorと組み合わせることで、foreachループによる直感的な反復処理が可能になります。
-
PHPのpi()関数とは?使い方と定義済み定数との対応を実例付きで解説
pi()関数の定義と使い方PHPのpi()関数は、数学定数π(円周率)の値を返す関数です。戻り値はfloat型の「3.14159265359」であり、PHPにあらかじめ定義されている定数M_PIとまったく同じ値になります。構文pi ( void ) : floatパラメータこの関数は引数を受け取りません。引数なしでそのまま呼び出すことができます。戻り値pi()関数は数学定数πの値を返し、定義済みの数学定数M_PIと等価です。数式の中では、M_PIの代わりにpi()関数を使うこともできます。対応するPHPバージョンこの関数はPHP 4.x、PHP 5.x、PHP 7.xのすべてのバージョンで利用
-
【PHP入門】glob()関数の使い方を徹底解説!パターンに一致するファイル・ディレクトリを取得する方法
PHPのglob()関数とは glob()関数は、指定されたパターンに一致するファイル名やディレクトリ名を配列として返す関数です。ワイルドカードを使用できるため、「特定の拡張子を持つファイルだけを一覧取得したい」といった場面で非常に便利です。 戻り値の挙動 一致するファイル・ディレクトリが見つかった場合:該当する要素を含む配列を返す 一致するものが1件もなかった場合:空の配列を返す エラーが発生した場合:FALSEを返す 構文 glob(pattern, flags) パラメータ pattern − 検索対象となるパターンを指定します。「*.htm」のようにワイルドカードを使った指定が可