PHP获取文件扩展名的方法


PHP获取文件扩展名的方法


上传成功示例

array(5) {
  ["name"]=>
      string(41) "测试.docx"
  ["type"]=>
      string(24) "application/octet-stream"
  ["tmp_name"]=>
      string(14) "/tmp/phpGbor6g"
  ["error"]=>
      int(0)
  ["size"]=>
      int(20793)
}

第1种方法:

$ext = substr(strrchr($upfile['name'], '.'), 1);
var_dump($ext);

结果: string(4) “docx”


第2种方法:

$ext = substr($upfile['name'], strrpos($upfile['name'], '.')+1);
var_dump($ext);

结果: string(4) “docx”


第3种方法:

$ext = end(explode('.', $upfile['name']));
var_dump($ext);

结果: string(4) “docx”


第4种方法:

$info = pathinfo($upfile['name']);
$ext =  $info['extension'];
var_dump($ext);

结果: string(4) “docx”


第5种方法:

$ext = pathinfo($upfile['name'], PATHINFO_EXTENSION);
var_dump($ext);

结果: string(4) “docx”


前四种方法都有些小的问题。
要想完全正确获取文件的扩展名,必须要能处理以下三种特殊情况。
1.没有文件扩展名
2.路径中包含了字符.,如/home/test.d/test.txt
3.路径中包含了字符.,但文件没有扩展名。如/home/test.d/test

很明显:
方法1、方法2不能处理第三种情况,
方法3不能正确处理第一三种情况。
方法4可以正确处理,但是在不存在扩展名时,会发出一个警告。

只有第5种方法才是最正确的方法。
pathinfo — 返回文件路径的信息

mixed pathinfo (string $path [, int $options = PATHINFO_DIRNAME | PATHINFO_BASENAME | PATHINFO_EXTENSION | PATHINFO_FILENAME ] )

pathinfo() 返回一个关联数组包含有 path 的信息。返回关联数组还是字符串取决于 options。

path
要解析的路径。

options
如果指定了,将会返回指定元素;
它们包括:
PATHINFO_DIRNAME - 目录
PATHINFO_BASENAME - 文件名(含扩展名)
PATHINFO_EXTENSION - 扩展名
PATHINFO_FILENAME - 文件名(不含扩展名,PHP>5.2)
这四个常量的值分别是1、2、4、8,

如果没有指定 options 默认是返回全部的单元。

返回值
如果没有传入 options ,将会返回包括以下单元的数组 array:dirname,basename 和 extension(如果有),以 及filename。

例子:

<?php
    $path_parts = pathinfo('/www/htdocs/inc/lib.inc.php');
    echo $path_parts['dirname'], "\n";
    echo $path_parts['basename'], "\n";
    echo $path_parts['extension'], "\n";
    echo $path_parts['filename'], "\n"; // since PHP 5.2.0
?>

以上例程会输出:

/www/htdocs/inc
lib.inc.php
php
lib.inc

例子:

<?php
    $path_parts = pathinfo('/path/emptyextension.');
    var_dump($path_parts['extension']);

    $path_parts = pathinfo('/path/noextension');
    var_dump($path_parts['extension']);
?>

以上例程的输出类似于:

string(0) ""

Notice: Undefined index: extension in test.php on line 6
NULL
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值