php如何获取文件的后缀名

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

php如何获取⽂件的后缀名
⽐如图⽚⽂件的后缀,jpg或gif等
有两个⽅法
⼀,假如$img为图⽚⽂件名
$img=12345.gif;
$img_ext = substr($img, strrpos($img, '.'));
⼆,⽤到php数组,先把⽂件名字符串读取到数组中
$ext2=explode(".",$img);
$count=count($ext2);
$count2=$count-1;
$file_name = $urlstr .'.'.$ext2[$count2];//得到后缀并重新定义新的⽂件名$file_name
另外附上其他⼩伙伴总结出来的⽅法:
第1种⽅法:
function get_extension($file)
{
substr(strrchr($file, '.'), 1);
}
第2种⽅法:
function get_extension($file)
{
return substr($file, strrpos($file, '.')+1);
}
第3种⽅法:
function get_extension($file)
{
return end(explode('.', $file));
}
第4种⽅法:
function get_extension($file)
{
$info = pathinfo($file);
return $info['extension'];
}
第5种⽅法:
function get_extension($file)
{
return pathinfo($file, PATHINFO_EXTENSION);
}
以上⼏种⽅式粗看了⼀下,好像都⾏,特别是1、2种⽅法,在我不知道pathinfo有第⼆个参数之前也⼀直在⽤。

但是仔细考虑⼀下,前四种⽅法都有各种各样的⽑病。

要想完全正确获取⽂件的扩展名,必须要能处理以下三种特殊情况。

1. 没有⽂件扩展名
2. 路径中包含了字符.,如/home/test.d/test.txt
3. 路径中包含了字符.,但⽂件没有扩展名。

如/home/test.d/test
很明显:1、2不能处理第三种情况,3不能正确处理第⼀三种情况。

4可以正确处理,但是在不存在扩展名时,会发出⼀个警告。

只有第5种⽅法才是最正确的⽅法。

顺便看⼀下pathinfo⽅法。

官⽹上介绍如下:
$file_path = pathinfo('/www/htdocs/your_image.jpg');
echo "$file_path ['dirname']\n";
echo "$file_path ['basename']\n";
echo "$file_path ['extension']\n";
echo "$file_path ['filename']\n"; // only in PHP 5.2+
它会返回⼀个数组,包含最多四个元素,但是并不会⼀直有四个,⽐如在没有扩展名的情况下,就不会有extension元素存在,所以第4种⽅法才会发现警告。

但是phpinfo还⽀持第⼆个参数。

可以传递⼀个常量,指定返回某⼀部分的数据:
PATHINFO_DIRNAME - ⽬录
PATHINFO_BASENAME - ⽂件名(含扩展名)
PATHINFO_EXTENSION - 扩展名
PATHINFO_FILENAME - ⽂件名(不含扩展名,PHP>5.2)
这四个常量的值分别是1、2、4、8,刚开始我还以为可以通过或运算指定多个:
pathinfo($file, PATHINFO_EXTENSION | PATHINFO_FILENAME);
后来发现这样不⾏,这只会返回⼏个进⾏或运算常量中最⼩的那个。

也就是四个标志位中最⼩位为1的常量。

相关文档
最新文档