• BPnet
  • ビジネス
  • IT
  • テクノロジー
  • 医療
  • 建設・不動産
  • TRENDY
  • WOMAN
  • ショッピング
  • 転職
  • ナショジオ
  • 日経電子版
PHP TIPS

71. PHPの便利な関数 glob

2008/01/31 ITpro

PHPには非常に多くの関数が用意されています。今回は便利ながら意外と知られていないglob関数を紹介したいと思います。

glob関数は指定したパターンにマッチするパス名をリスト化して返してくれる関数です。

たとえば、

a.txt b.jpg c.png d.txt

といったファイルが同一階層上にある時、

print_r(glob("*.txt"));

を行うと以下のような結果になります。

Array
(
    [0] => a.txt
    [1] => d.txt
)

これを利用すると、ディレクトリ内のjpg画像を全て表示させたい場合などは、以下のようにglob関数を使用することができます。

foreach (glob("*.jpg") as $filename) {
    echo '<img src="' . $filename . '" alt="' . $filename . '" />';
}

また、glob関数には二つ目の引数をオプションとして指定することができます。これには以下のような定数を指定することができます。

  • GLOB_MARK - 各戻り値にスラッシュを追加します
  • GLOB_NOSORT - ディレクトリに存在するファイルを返します (ソートはされません)
  • GLOB_NOCHECK - 検索パターンにマッチするファイルが 見つからない場合に検索パターン自身を返す
  • GLOB_NOESCAPE - バックスラッシュによってメタ文字をクォートしません
  • ここでは、中でもよく使う GLOB_ONLYDIR と GLOB_BRACE を詳しく紹介したいと思います。

    GLOB_ONLYDIR はその名の通りディレクトリだけを取得するために使用するオプションです。

    このオプションを指定すると、結果にはパターンにマッチしたディレクトリ名だけが入るようになります。

    この GLOB_ONLYDIR は、PHP 4.3.3以前のバージョンだとWindows上では使用することはできません。

    GLOB_BRACE は、複数のパターンを指定するために使用するオプションです。これを指定すると、パターンの指定に複数の指定を組み合わせることができるようになります。

    ほどの例を使用すると、

    foreach (glob("{*.jpg,*.jpeg,*.gif,*.png}", GLOB_BRACE) as $filename) {
        echo '<img src="' . $filename . '" alt="' . $filename . '" />';
    }

    上記のようにパターンを指定すると、拡張子がjpg,jpeg,gif,pngのファイルを全て取得し、表示させることができます。

    また、PHP 5.1からは新しく GLOB_ERR オプションが追加されました。glob関数で、ファイル読み込み時にエラーが発生しても通常はエラーは無視されてしまうのですが、このオプションを指定すると、エラー発生時には処理を停止させることが出来るようになります。

    PHPでファイルの管理を行うときはとても便利な関数なので、ぜひ有効活用しましょう。



(アシアル 松田惇)


この記事は、アシアルが運営するPHP開発者のためのポータル&コミュニティサイト「PHPプロ!」で毎週配信しているPHP・TIPSメーリングリストを再録したものです。
同サイトでは、他にもPHP最新ニュースや、困ったときのQ&A掲示板、初心者向けのPHP講座など、PHP開発者をサポートする情報を掲載しています。

あなたにお薦め

連載新着

連載目次を見る

今のおすすめ記事

ITpro SPECIALPR

What’s New!

経営

アプリケーション/DB/ミドルウエア

クラウド

運用管理

設計/開発

サーバー/ストレージ

クライアント/OA機器

ネットワーク/通信サービス

セキュリティ

もっと見る