问题

这是一个您可以通过各种答案在网络上阅读的问题:

$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];

等.

但是,总是有"最好的方法",它应该在stackoverflow.



解决方法

来自其他脚本语言的人总是认为他们的是更好的,因为他们有一个内置的函数,而不是PHP(我现在看着pythonistas: - )).

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

$ext = pathinfo($filename, PATHINFO_EXTENSION);

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

请记住,如果您想要处理非ASCII字符,则需要先设置本地. E.G:

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

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

最后,此工作仅适用于使用PARSE_URL覆盖的文件路径,而不是网址资源路径.

享受




相关问题推荐