<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 函数处理文件匹配任务!