php - 如何在 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');

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

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

享受

https://stackoverflow.com/questions/173868/

相关文章:

php - fatal error : Allowed Memory Size of 1342177

php - 查找两个日期之间的天数

php - 如何将 var_dump 的结果捕获到字符串?

php - 如果文件夹不存在,则创建一个文件夹

php - PHP中的die()和exit()有什么区别?

php - 从分隔字符串中删除尾随分隔字符

php - 绕过 mysql_real_escape_string() 的 SQL 注入(injec

php - 如何使用 PHP 发送 POST 请求?

php - 如何在 PHP 中去除字符串中的所有空格?

php - 如何在 PHP 中将字符串转换为数字?