好问题
Good  Question
  • 首 页
  • 问题
    • PHP
    • JAVA
    • CPlusPlus
    • C#
    • SQL
  • 关 于
  • 联 系
在PHP中如何获取文件扩展名? 关闭 返回上一级  

在PHP中如何获取文件扩展名?
+ 查看更多

发布日期:2017-03-28 16:11
分类:PHP
浏览次数:84

这个问题你可以在网上各处看到各种不一样的答案:

$ext = end(explode('.', $filename));
$ext = substr(strrchr($filename, '.'), 1);
$ext = substr($filename, strrpos($filename, '.') + 1);
$ext = preg_replace('/^.*.([^.]+)$/D', '$1', $filename);

$exts = split("[/\.]", $filename);
$n    = count($exts)-1;
$ext  = $exts[$n];

 

但是,我相信还有“最好的办法” :) 如果没有的话,也没关系,至少我问过了。


回答

用其他脚本语言的人总是认为他们的方法更好,因为他们有内置的函数而PHP没有(我现在在看pythonistas)事实上,PHP中的确有这种方法,只不过很少有人知道,就是这个 pathinfo():

$ext = pathinfo($filename, PATHINFO_EXTENSION);

这个方式很快而且是内置的,pathinfo()可以给你其他信息,比如根据你传递给他的常量来规范路径。记住,如果你想要能够处理非ASCII字符,你首先需要设置语言环境,例如:

setlocale(LC_ALL,'en_US.UTF-8');

还要注意,这不考虑文件内容或mimetype,你只能获得扩展名,但你需要的就是这个。

最后提醒一下,这个工作只针对文件路径,而不是被PARSE_URL覆盖的URL资源路径。

 

上一篇在PHP中 die() 函数和 exit() 函数有什么区别?
如何用PHP获取当前时区的日期和时间?下一篇
下一篇如何用PHP获取当前时区的日期和时间?

最新文章

  • 函数`__construct`用来干嘛的
    发布日期:2018-03-26
  • 通过访客的IP得到他们的地区
    发布日期:2018-03-26
  • 合并两个PHP对象的最好的方法是什么?
    发布日期:2018-03-26
  • 该如何把一该如何把一个对象转化成数组?
    发布日期:2018-03-26
  • 什么是输出缓冲区?
    发布日期:2018-03-26
  • 在PHP中怎么把用逗号分隔的字符串分隔在一个数组里?
    发布日期:2018-03-26
  • 在PHP中使用foreach循环时查找数组的最后一个元素
    发布日期:2018-03-26
关于好问
收集整理一些有用的问题和回答,造福中国的程序旺和IT喵们!
友情链接
起飞页 
相关信息
版权声明
Copyright © 2016 - 2022  苏州卡达网络科技有限公司 备案号:苏ICP备09008221号