长沙网站开发_PHP获取文件扩展名的N种方法

发布日期:2016-12-22 09:59

在进行网站开发中,需要根据文件类型对文件进行不同的操作,获取文件扩展名成为了程序猿必不可少的技能。下面总结一下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)。

 
以上信息由长沙网站建设--长沙蒲公英网络收集与整理,禁止用于任何商业行为