(PHP) glob関数の使い方【ファイルを一覧取得する】

(PHP) glob関数の使い方【ファイルを一覧取得する】

 

本記事では、phpにおいて、ファイルのパターン検索を行うことができる
glob関数の使い方について、サンプルプログラムを交えて紹介していく。

 

glob関数とは

glob関数はパターンにマッチするパスを探すことができる関数だ。

あるフォルダの中に入っている特定のパターンに一致するファイル名をまとめて取得することができ、結果をforeachなどのループ処理で扱うことができる点で便利な関数だ。

 

glob関数の書式

glob関数の書式は以下。

glob(ファイル名を取得したいパス[, オプションフラグ]);

 

第1引数には、探したいパターンになるパスを指定する。
第2引数には、オプションフラグ(※後述)を任意で指定する。無くても大丈夫。

 

glob関数の戻り値

指定したパスから見つかったファイルやフォルダを、配列の形式で取得する。

 

 

glob関数でファイルを取得する例




では実際にglob関数を使ってファイルを取得してみる。

例として以下のようなファイル群を格納した「test_dir」というディレクトリを用意した。

>ls -l test_dir

-rw-r--r--  1 root  staff  0 Nov 20 13:07 example.sh
-rw-r--r--  1 root  staff  0 Nov 20 22:24 file1
-rw-r--r--  1 root  staff  0 Nov 20 22:24 file2
-rw-r--r--  1 root  staff  0 Nov 20 22:24 file3
-rw-r--r--  1 root  staff  0 Nov 20 22:25 file4
-rw-r--r--  1 root  staff  0 Nov 20 22:25 file5
-rw-r--r--  1 root  staff  0 Nov 20 13:07 sample1.php
-rw-r--r--  1 root  staff  0 Nov 20 21:08 sample2.php
-rw-r--r--  1 root  staff  0 Nov 20 21:08 sample3.php
-rw-r--r--  1 root  staff  0 Nov 20 21:08 sample4.php
-rw-r--r--  1 root  staff  0 Nov 20 21:08 sample5.php
-rw-r--r--  1 root  staff  0 Nov 20 13:05 test.txt

 

glob実行サンプルプログラム

test_dir ディレクトリと同階層に、以下のようなglob関数を使用するサンプルプログラム(glob.php)を配置して実行する(※\nは改行文字)

glob.php

<?php

echo "*と書く場合\n";

foreach (glob("test_dir/*") as $filename) {
  echo $filename."\n";
}

echo "\n*.phpと書く場合\n";

foreach (glob("test_dir/*.php") as $filename) {
  echo $filename."\n";
}

echo "\n*.*と書く場合\n";

foreach (glob("test_dir/*.*") as $filename) {
  echo $filename."\n";
}

実行結果

>php glob.php 
*と書く場合
test_dir/example.sh
test_dir/file1
test_dir/file2
test_dir/file3
test_dir/file4
test_dir/file5
test_dir/sample1.php
test_dir/sample2.php
test_dir/sample3.php
test_dir/sample4.php
test_dir/sample5.php
test_dir/test.txt

*.phpと書く場合
test_dir/sample1.php
test_dir/sample2.php
test_dir/sample3.php
test_dir/sample4.php
test_dir/sample5.php

*.*と書く場合
test_dir/example.sh
test_dir/sample1.php
test_dir/sample2.php
test_dir/sample3.php
test_dir/sample4.php
test_dir/sample5.php
test_dir/test.txt

 

上記のように、ワイルドカードなどを使用して、パターンマッチングでファイルの一覧を取得し、さらに取得した結果をforeachなどのループ処理に使用することが可能だ。

 

glob関数の第2引数:オプションフラグについて

glob関数の第2引数に指定できるオプションフラグは、任意で設定することができ、以下の値を設定できる。

オプション

説明

GLOB_MARK

各ディレクトリにスラッシュを追加することが可能

GLOB_NOSORT

? ディレクトリに存在するファイルを返す

GLOB_NOCHECK

? パターンにマッチするファイル無いときに、パターン自体を返す

GLOB_NOESCAPE

バックスラッシュを利用した、メタ文字のクォートを行わない

GLOB_BRACE

a」、「b」あるいは「c」のいずれかにマッチさせることが可能

GLOB_ONLYDIR

パターンにマッチするディレクトリのみを返す

GLOB_ERR

ディレクトリを無事ができない等のエラーの際は処理を停止

 

上記サンプルプログラムの使い方が基本だが、オプションフラグも使いこなすことでより便利にglob関数を使いこなせると思うのでぜひ頭の片隅に入れておこう。

 

glob関数の使い方まとめ

  • フォルダ名/*とするとフォルダの下のファイル名とフォルダ名を取得する。
  • フォルダ名/*.phpとするとPHPファイルのみ取得する。
  • フォルダ名/*.*とすると全てのファイル名を取得可能。

 

(PHP) 外部コマンド実行関数の使い方まとめ・違いなど【shell_exec(), passthru() 】

(PHP) ob_start()で、標準出力をバッファリングする

(PHP)「self::」と「$this」の違い【使い分け方なども紹介】

(PHP) spl_autoload_registerの使い方と解説

 

(PHP) list関数の使い方【配列を効率よく受け取る】

 

https://www.php.net/manual/ja/function.glob.php

 

記事が気に入った方はシェアをお願いします!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です