所属栏目:发布日期:2016-12-22 10:05浏览量:2704作者:admin
在进行网站开发中,需要根据文件类型对文件进行不同的操作,获取文件扩展名成为了程序猿必不可少的技能。下面总结一下PHP中获取文件扩展名的几种方式:
第一种:
function get_extension($file)
{
return end(explode('.', $file));
}
第二种:
function get_extension($file)
{
return substr($file, strrpos($file, '.')+1);
}
第三种:
function get_extension($file)
{
return substr(strrchr($file, '.'), 1);
}
第四种:
function get_extension($file)
{
$info = pathinfo($file);
return $info['extension'];
}
第五种:
function get_extension($file)
{
return pathinfo($file, PATHINFO_EXTENSION);
}
这几种方式通常情况下,都能够获得想要的结果,其中第二、三种一般使用较多。
仔细考虑一下,我们在获取文件扩展名时会遇到以下几种特殊情况:
1. 文件没有扩展名;
2. 路径中包含字符”.”:如/home/test.d/test.txt;
3. 路径中包含字符”.”,但文件没有扩展名:如/home/test.d/test。
其中:第二、三种方式不能处理第3种情况;
第一种方式不能正确处理没有扩展名的情况;
第四咱方式可以正确处理,但在不存在扩展名时,会发出警告;
对比发现第五种方法才是最正确的方法。
简单介绍一下pathinfo方法:
$file_path = pathinfo('/www/htdocs/image.jpg');
echo "$file_path ['dirname']\n";// /www/htdocs
echo "$file_path ['basename']\n";// image.jpg
echo "$file_path ['extension']\n";// jpg
echo "$file_path ['filename']\n"; // image //only in PHP 5.2+
通常情况下会返回一个包含四个元素的数组,但当没有扩展名的情况下,extension元素就不存在,(这也是第四种方法发现警告的原因)。
pathinfo还支持第二个参数,可以传递一个常量,指定返回具体的数据:
PATHINFO_DIRNAME - 目录
PATHINFO_BASENAME - 文件名(含扩展名)
PATHINFO_EXTENSION - 扩展名
PATHINFO_FILENAME - 文件名(不含扩展名,PHP>5.2)
这四个常量的值分别是1、2、4、8。
Ps:pathinfo方法只能返回一个值,如果同时指定多个(使用|分开):
pathinfo($file, PATHINFO_EXTENSION | PATHINFO_FILENAME);
只会返回2个常量中值较小的参数的结果(返回extension)。