現在の位置: ホーム> 最新記事一覧> PHP Glob機能を使用して、さまざまなファイル拡張機能を効率的に一致させる方法は?

PHP Glob機能を使用して、さまざまなファイル拡張機能を効率的に一致させる方法は?

gitbox 2025-08-26
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// この記事の例のコード,それを使用する方法を示します PHP の glob ファイルマッチングの機能</span></span><span>
</span><span><span class="hljs-comment">// glob 是一个用于查找符合模式の文件路径の函数,ワイルドカード文字をサポートします</span></span><span>

</span><span><span class="hljs-comment">// 这里是文章内容の前置无关代码示例,実際の環境のコード構造をシミュレートします</span></span><span>
</span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">dummyFunction</span></span><span>(</span><span><span class="hljs-params"></span></span><span>) {
    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-string">"このコードは、記事のトピックとは何の関係もありません,デモンストレーションのみ"</span></span><span>;
}
</span><span><span class="hljs-title function_ invoke__">dummyFunction</span></span><span>();

</span><span><span class="hljs-meta">?></span></span><span>

<hr>

<h1>使い方 PHP glob 函数高效匹配不同の文件扩展名?</h1>

<p>存在する PHP 真ん中,<code></span><span><span class="hljs-title function_ invoke__">glob</span></span><span>()

たとえば、現在のディレクトリ内のすべての.txtファイルを一致させます。

 <span class="fun"></span> <span> <span class = "hljs-variable"> $ files </span> </span> <span> = </span> <span> <span class = "hljs-title function_ invoke __"> blov> </span> <span>(</span> <span> <span = "hljs-string"> </</</</</<</span>

2。複数の拡張機能を一致させる一般的な方法

方法1:複数のグローブ呼び出しを使用して結果をマージする

これは最も直感的な方法であり、それぞれ複数回グローブを呼び出してから、配列をマージします。

 </span><span><span class="hljs-variable">$extensions</span></span><span> = [</span><span><span class="hljs-string">'jpg'</span></span><span>, </span><span><span class="hljs-string">'png'</span></span><span>, </span><span><span class="hljs-string">'gif'</span></span><span>];
</span><span><span class="hljs-variable">$files</span></span><span> = [];
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$extensions</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$ext</span></span><span>) {
    </span><span><span class="hljs-variable">$files</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_merge</span></span><span>(</span><span><span class="hljs-variable">$files</span></span><span>, </span><span><span class="hljs-title function_ invoke__">glob</span></span><span>(</span><span><span class="hljs-string">"*.<span class="hljs-subst">{$ext}</span></span></span><span>"));
}

欠点は、ファイルシステムを複数回読み取る必要があることです。これはわずかに効率が低いことです。

方法2:カーリーブレースモードを使用します(Glob_Braceをオンにする必要があります)

PHPのGlobは、Bashと同様のブレスレット拡張機能をサポートしていますが、 Glob_Braceフラグが必要です。

 </span><span><span class="hljs-variable">$files</span></span><span> = </span><span><span class="hljs-title function_ invoke__">glob</span></span><span>(</span><span><span class="hljs-string">"*.{jpg,png,gif}"</span></span><span>, GLOB_BRACE);

このようにして、複数の拡張機能を1回の呼び出しと一致させることができますが、これはより効率的です。

3。注意すべきこと
  • Glob_Braceの互換性:一部のシステム(一部の非GNU環境など)では、 Glob_Braceがサポートされず、動作環境を確認する必要があります。
  • 症例感度:グローブマッチングは、デフォルトでケースに敏感です。拡張機能を多様なケースと一致させたい場合は、拡張機能のいくつかの組み合わせを作成するなど、追加の処理が必要です。

4。サンプルコードと組み合わせた
</span><span><span class="hljs-comment">// 使用 GLOB_BRACE 複数の拡張機能を一度に一致させます</span></span><span>
</span><span><span class="hljs-variable">$files</span></span><span> = </span><span><span class="hljs-title function_ invoke__">glob</span></span><span>(</span><span><span class="hljs-string">"*.{jpg,png,gif}"</span></span><span>, GLOB_BRACE);
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$files</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$file</span></span><span>) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"ファイルを見つけます: "</span></span><span> . </span><span><span class="hljs-variable">$file</span></span><span> . </span><span><span class="hljs-string">"\n"</span></span><span>;
}

要約します

Glob_Braceフラグを使用してGlob()のブレース拡張機能を使用することは、PHPの複数のファイル拡張機能を効率的に一致させる簡単なソリューションです。互換性が許可されている場合は、この方法を推奨することをお勧めします。それ以外の場合、 GLOW()を複数回呼び出して結果をマージすることにより、同様の機能を実現できます。

この記事が、PHPグローブ機能をよりよく利用して、ファイルマッチングタスクを処理するのに役立つことを願っています。