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

2022-08-30 05:46:32

这是一个你可以在网络上任何地方阅读的问题,有各种答案:

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


答案 1

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

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

$ext = pathinfo($filename, PATHINFO_EXTENSION);

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

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

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

另外,请注意,这不会考虑文件内容或哑剧类型,您只能获得扩展名。但这是你所要求的。

最后,请注意,这仅适用于文件路径,而不适用于 URL 资源路径,后者使用PARSE_URL进行介绍。

享受


答案 2

pathinfo()

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

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

推荐