php中提取文件扩展名最直接的方式是explode('.', $filename)后array_pop(),但需防错:先判断点数是否大于1,再pop;更可靠的是用pathinfo($filename, pathinfo_extension),它能正确处理.tar.gz、.htaccess等边界情况。

要从文件名字符串中提取扩展名,先用explode按点号分割,再用array_pop获取最后一段,这是PHP里最直接的后缀提取方式。
基础操作:用explode + array_pop提取后缀
第一步:用点号(.)对文件名字符串做explode分割,生成一个数组;
第二步:对这个数组调用array_pop(),它会弹出并返回最后一个元素,也就是扩展名。
这一步操作起来很简单,直接把文件拖进去就行。但注意:如果文件名以点开头(如".gitignore"),explode('.', $str)会产生空字符串开头的数组,array_pop仍能返回"gitignore"——这不是你想要的后缀,而是整个文件名去掉首个点后的部分。
安全提取:过滤空片段再pop
方法一:先用array_filter过滤掉空值,再array_pop
$parts = explode('.', $filename);
$parts = array_filter($parts, 'strlen');
$ext = array_pop($parts);
方法二:用pathinfo替代——更可靠,专为路径解析设计
$ext = pathinfo($filename, PATHINFO_EXTENSION);
【pathinfo不依赖分隔符位置,能正确处理.tar.gz、.htaccess等边界情况】
防错处理:检查分割结果是否有效
① 执行 $parts = explode('.', $filename);
② 判断 count($parts) > 1 是否成立——只有至少一个点时才可能有后缀;
③ 若成立,执行 $ext = array_pop($parts); 否则 $ext = '';
这一步不能跳过。如果字符串里根本没有点(如"readme"),explode返回单元素数组,array_pop会返回"readme",误判为扩展名。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











