glob

関数の概要

PHPの glob 関数は、指定したパターンに一致するファイルやディレクトリの一覧を取得するための関数です。主にファイルシステムから条件に合うファイル群を検索したい場合に使われ、ワイルドカードを利用して柔軟にマッチングできます。ディレクトリ内の特定の拡張子を持つファイルを一覧表示したいときなど、ファイル操作で非常に便利です。

パラメータの説明

  • pattern(必須): 検索したいファイルやディレクトリの名前パターンを指定します。ワイルドカード(例えば *?)を使用可能です。
  • flags(任意): 検索方法を制御するための定数を設定します。複数のフラグはビット和(|)で組み合わせられます。主なフラグは以下の通りです。
    • GLOB_MARK:結果のディレクトリ名の末尾にスラッシュ(/)を付ける
    • GLOB_NOSORT:結果の配列をソートしない(取得順序が速くなることがある)
    • GLOB_BRACE:波括弧 {a,b} を用いた複数パターンの指定を有効にする(環境によりサポートされていないことがある)
    • GLOB_ONLYDIR:ディレクトリのみを検索対象にする
    • GLOB_ERR:読み込みエラー時にfalseを返す

戻り値

パターンに一致したファイルやディレクトリのパスを文字列の配列として返します。一致するものがない場合は空の配列を返します。エラーが発生すると false を返します。

使用例

基本的な使い方

<?php
$files = glob('*.txt');
print_r($files);
?>

現在のディレクトリ内の拡張子が .txt のファイルをすべて取得します。

サブディレクトリのファイルを取得(GLOB_ONLYDIRの利用)

<?php
$dirs = glob('path/to/directory/*', GLOB_ONLYDIR);
print_r($dirs);
?>

指定フォルダの直下にあるディレクトリのみを取得します。ファイルは含まれません。

複数パターンを指定する(GLOB_BRACEの利用)

<?php
$images = glob('images/*.{jpg,png,gif}', GLOB_BRACE);
print_r($images);
?>

imagesディレクトリ内の拡張子が .jpg, .png, .gif の画像ファイルをまとめて取得します。

結果をソートせずに取得(GLOB_NOSORTの利用)

<?php
$files = glob('*.log', GLOB_NOSORT);
print_r($files);
?>

拡張子が .log のファイルをソートなしで取得し、処理速度を向上させることができます。

関連する関数

  • scandir(): 指定ディレクトリ内のファイルとディレクトリを一覧取得(パターンマッチは不可)
  • opendir(), readdir(), closedir(): ディレクトリを開いて一つずつ読み込む低レベルな操作
  • pathinfo(): ファイルパスの情報(拡張子やディレクトリ名など)を取得
  • is_file(), is_dir(): 指定パスがファイルまたはディレクトリか判定する関数

まとめ

glob 関数は、簡潔なパターン指定でファイル群を効率よく取得できる便利な関数です。ワイルドカードやフラグを使いこなせば、実務でのファイル操作、例えばログの取得や画像ファイルの管理などに非常に役立ちます。処理速度の面でも設定を変更可能で、用途に合わせて柔軟に活用できるため、PHPを使う場面ではぜひ覚えておきたい関数のひとつです。