首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在PHP中获得文件扩展名?

如何在PHP中获得文件扩展名?
EN

Stack Overflow用户
提问于 2008-10-06 19:00:03
回答 29查看 690K关注 0票数 804

这是一个你可以在网络上随处可见的问题,有各种各样的答案:

代码语言:javascript
运行
复制
$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];

等。

然而,总有“最好的方法”,它应该在Stack Overflow上。

EN

回答 29

Stack Overflow用户

回答已采纳

发布于 2008-10-06 11:03:24

来自其他脚本语言的人总是认为他们的脚本语言更好,因为他们有一个内置的函数来做这件事,而不是PHP (我现在正在看Pythonistas :-))。

事实上,它确实存在,但很少有人知道。认识一下pathinfo()

代码语言:javascript
运行
复制
$ext = pathinfo($filename, PATHINFO_EXTENSION);

这是快速和内置的。pathinfo()可以提供其他信息,比如规范路径,这取决于您传递给它的常量。

请记住,如果您希望能够处理非ASCII字符,则需要首先设置区域设置。例如:

代码语言:javascript
运行
复制
setlocale(LC_ALL,'en_US.UTF-8');

另外,请注意,这并没有考虑到文件内容或mime类型,您只获得了扩展名。但这是你想要的。

最后,请注意,这只适用于文件路径,而不适用于URL资源路径,这在PARSE_URL中有介绍。

尽情享受

票数 1.9K
EN

Stack Overflow用户

发布于 2008-10-06 11:02:34

pathinfo()

代码语言:javascript
运行
复制
$path_info = pathinfo('/foo/bar/baz.bill');

echo $path_info['extension']; // "bill"
票数 184
EN

Stack Overflow用户

发布于 2015-07-17 20:39:32

示例网址:http://example.com/myfolder/sympony.mp3?a=1&b=2#XYZ

A)不要使用建议的不安全

代码语言:javascript
运行
复制
pathinfo($url)['dirname']    'http://example.com/myfolder'
pathinfo($url)['basename']   'sympony.mp3?a=1&b=2#XYZ'         // <------- BAD !!
pathinfo($url)['extension']  'mp3?a=1&b=2#XYZ'                 // <------- BAD !!
pathinfo($url)['filename']   'sympony'

B)使用PARSE_URL

代码语言:javascript
运行
复制
parse_url($url)['scheme']    'http'
parse_url($url)['host']      'example.com'
parse_url($url)['path']      '/myfolder/sympony.mp3'
parse_url($url)['query']     'aa=1&bb=2'
parse_url($url)['fragment']  'XYZ'

奖励:查看all native PHP examples

票数 113
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/173868

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档