ホームページ  >  記事  >  バックエンド開発  >  PHP glob() 関数を使用して、ファイル名のワイルドカード文字に基づいてファイルを検索します

PHP glob() 関数を使用して、ファイル名のワイルドカード文字に基づいてファイルを検索します

PHPz
PHPzオリジナル
2023-06-27 11:16:291629ブラウズ

ファイルを処理するとき、指定されたファイルを検索する必要がある状況がよく発生します。ファイルの数が少ない場合は、手動検索を使用できます。ただし、多数のファイルが関係する場合、手動検索は膨大な作業になります。このとき、便利な関数である glob() 関数が役に立ちます。

glob() 関数は、PHP の非常に実用的な関数であり、ワイルドカード文字を指定してファイルやディレクトリを検索できます。 glob() 関数は、さまざまなパラメーターを使用して、見つかったファイルを並べ替えたりフィルター処理したりすることもできるため、多数のファイルの中から必要なファイルをすばやく見つけることができます。

以下では、関数の基本的な使用法から始めて、徐々に glob() 関数の使用法を紹介します。

glob() 関数の基本的な使用法

glob() 関数は非常に単純で、パラメータは 1 つだけ、つまり、検索するファイルを表すワイルドカード文字だけです。以下に例を示します。

$files = glob('/path/to/files/*.jpg');

この例のワイルドカード文字は「*.jpg」です。これは、/path/to/files/ ディレクトリ内でサフィックス「.jpg」を持つすべてのファイルを検索することを意味します。 。見つかった結果は配列の形式で返されます。

特定のディレクトリ内のすべてのファイルとサブディレクトリを検索したい場合は、「**」ワイルドカードを使用できます:

$files = glob('/path/to/files/**');

このようにして、/ 内のファイルを検索できます。 path/to/files/ directory サブディレクトリの下にあるものを含むすべてのファイルとディレクトリ。

さらに、ワイルドカードで角括弧を使用して一連の文字を指定することもできます。

$files = glob('/path/to/files/[abc]*');

この方法では、「a」、「b」、または「c」で始まるすべてのファイルを検索できます。 「。」

glob() 関数の高度な使用法

上記では、glob() 関数の基本的な使用法を紹介しています。ただし、見つかった結果を並べ替えたりフィルターしたりするためのパラメーターを設定することもできます。

ソート方法の設定

2 番目のパラメータ (ソート モードを示す) を設定することで、検索結果をソートできます。一般的に使用されるソート モードの一部を次に示します。

  • GLOB_NOSORT: デフォルトのソート モード。ソートは実行されません。
  • GLOB_NOCHECK: エラー チェックは行いません。
  • GLOB_NOCASE: 大文字と小文字は区別されません。
  • GLOB_BRACE: 中括弧の展開を有効にします。ワイルドカードで中括弧を使用できます。
  • GLOB_ONLYDIR: ディレクトリのみを検索します。
  • GLOB_ERR: エラーが発生した場合は検索を停止します。

たとえば、接尾辞「.jpg」を持つすべてのファイルを名前の逆順に並べ替える場合は、次のコードを使用できます。

$files = glob('/path/to/files/*.jpg', GLOB_NOSORT|GLOB_NOCHECK);
rsort($files);

この例では、ソート方法を設定するには、GLOB_NOSORT と GLOB_NOCHECK の 2 つの定数を使用します。

フィルターの設定

3 番目のパラメーター (フィルターを示す) を設定することで、見つかった結果をフィルターできます。一般的に使用されるフィルターをいくつか示します。

  • GLOB_MARK: ディレクトリを示すには、結果に「/」を追加します。
  • GLOB_NOSORT: 並べ替えはありません。
  • GLOB_ONLYDIR: ディレクトリのみを検索します。
  • GLOB_ERR: エラーが発生した場合は検索を停止します。
  • GLOB_BRACE: 中括弧の展開を有効にします。ワイルドカードで中括弧を使用できます。
  • GLOB_NOESCAPE: オンにすると、ワイルドカード文字の「」はエスケープされません。
  • GLOB_NOCHECK: エラー チェックは行いません。
  • GLOB_NOCASE: ファイル名では大文字と小文字が区別されません。

たとえば、サイズが 100MB 以下のファイルのみを検索する必要がある場合は、次のコードを使用できます。

$files = glob('/path/to/files/*.*');
array_filter($files, function($file) {
  return filesize($file) <= 100 * 1024 * 1024;
});

この例では、array_filter( ) 結果フィルターをフィルター処理する関数。

概要

上記の例を通じて、glob() 関数を使用して PHP でファイルとディレクトリを検索する方法を学びました。 glob() 関数は非常にシンプルかつ実用的で、多くのパラメーターと使用方法があり、より複雑で柔軟なファイル検索と処理を実現できます。 PHP プロジェクトでは、glob() 関数を選択して、大量のファイルとディレクトリを簡単かつ効率的に処理できます。

以上がPHP glob() 関数を使用して、ファイル名のワイルドカード文字に基づいてファイルを検索しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。