<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__">glob</span></span><span>(</span><span><span class="hljs-string">"*.txt"</span></span><span>);</span>
這是最直觀的方法,分別調用多次glob,然後合併數組:
</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>"));
}
缺點是要多次讀取文件系統,效率稍低。
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);
這樣只需一次調用即可匹配多種擴展名,效率較高。
</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()的花括號擴展配合GLOB_BRACE標誌,是PHP 中高效匹配多種文件擴展名的簡潔方案。在兼容性允許的情況下,推薦優先使用這一方法。否則可通過多次調用glob()並合併結果的方式實現類似功能。
希望本文能幫助你更好地利用PHP glob 函數處理文件匹配任務!