如何在PHP中获取(提取)文件扩展名?

这是一个问题,你可以在网上随处阅读各种答案:

$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上。


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

事实上,它确实存在,但很少有人知道它。 符合pathinfo()

$ext = pathinfo($filename, PATHINFO_EXTENSION);

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

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

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

另外请注意,这不考虑文件内容或mimetype,你只能得到扩展名。 但这是你要求的。

最后,请注意,这仅适用于文件路径,而不适用于使用PARSE_URL覆盖的URL资源路径。

请享用


PATHINFO()

一个例子...

$path_info = pathinfo('/foo/bar/baz.bill');

echo $path_info['extension']; // "bill"

使用更安全: PARSE_URL (而不是PATHINFO


例如,url是http://example.com/myfolder/sympony.mp3?a=1&b=2#XYZ

PATHINFO回报:

$x = pathinfo($url);
$x['dirname']   
                        链接地址: http://www.djcxy.com/p/8219.html
                        

上一篇: How to get(extract) a file extension in PHP?

下一篇: ASP.NET/IIS6: How to search the server's mime map?