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

PHPz
リリース: 2023-06-27 13:34:01
オリジナル
1628 人が閲覧しました

ファイルを処理するとき、指定されたファイルを検索する必要がある状況がよく発生します。ファイルの数が少ない場合は、手動検索を使用できます。ただし、多数のファイルが関係する場合、手動検索は膨大な作業になります。このとき、便利な関数である 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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!