这是一个问题,您可以在网络上到处阅读并获得各种答案:
$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 :-))。
实际上,它确实存在,但是很少有人知道。认识pathinfo()
:
pathinfo()
这是快速且内置的。
$ext = pathinfo($filename, PATHINFO_EXTENSION);
可以根据传递给它的常量为您提供其他信息,例如规范路径。
[请记住,如果您希望能够处理非ASCII字符,则需要先设置语言环境。例如:
pathinfo()
[另外,请注意,这并未考虑文件内容或mime类型,您只能获得扩展名。但这就是您要的。
最后,请注意,这仅适用于文件路径,不适用于使用PARSE_URL覆盖的URL资源路径。
享受
pathinfo
$info = new SplFileInfo('test.zip');
echo $info->getExtension(); // ----- Output -----> zip
是一个数组。我们可以检查目录名,文件名,扩展名
$ext = pathinfo($filename, PATHINFO_EXTENSION);
(查询参数),这两种解决方案都将(不正确)视为文件扩展名的一部分。?
setlocale(LC_ALL,'en_US.UTF-8');
pathinfo()
。这是所有比较方法中最快的方法。 pathinfo(basename($_FILES["fileToUpload"]["name"]), PATHINFO_EXTENSION)
tar.gz
示例URL:pathinfo()
还有PATHINFO
:
E-satis的响应是确定文件扩展名的正确方法。
只要它不包含路径,您也可以使用:
1]
string(3) "png"
string(2) "gz"
非常有用。例如:string(3) "png"
string(2) "gz"
。