从文件名中获取扩展名,如变量[重复]
Posted
技术标签:
【中文标题】从文件名中获取扩展名,如变量[重复]【英文标题】:Get extension from filename like variable [duplicate] 【发布时间】:2011-09-13 07:55:08 【问题描述】:可能重复:How to extract a file extension in php?
我有一个变量$filename="filename.ext"
或$filename="filena.m.e.ext"
等等。如何从变量/字符串中提取扩展名(此处为ext
)?变量可能会改变或可能有多个点..在这种情况下,我想得到最后一个点之后的部分..
【问题讨论】:
【参考方案1】:你可以这样定义一个函数:
function get_file_extension($filename)
/*
* "." for extension should be available and not be the first character
* so position should not be false or 0.
*/
$lastDotPos = strrpos($fileName, '.');
if ( !$lastDotPos ) return false;
return substr($fileName, $lastDotPos+1);
或者你可以使用 PHP 内置的 Spl_FileInfo 对象
【讨论】:
+1 提醒了这一点。我总觉得我没有尽我所能(而且应该)使用 SPL。 +1 因为这也适用于 URL。 很酷,但最好从头到尾检查!因为圆点一般都差不多到底。使用循环,当我们到达第一个点时,我们 substr !也比 pathinfo() 快吗?事实上,它返回一个数组(不同的数据)更多的计算要做!但是 pathinfo($img, PATHINFO_EXTENSION) 呢?这是计算所有数据,还是只执行一个获取信息的方法【参考方案2】:您可以使用 . 分解字符串,然后取最后一个数组项:
$filename = "file.m.e.ext";
$filenameitems = explode(".", $filename);
echo $filenameitems[count($filenameitems) - 1]; // .ext
// or echo $filenameitem[-1];
【讨论】:
filename.tar.gz
呢?【参考方案3】:
您可以使用路径信息查询。
$info = pathinfo($file);
在哪里
$info['extension']
包含扩展名
【讨论】:
【参考方案4】:有很多方法可以做到这一点,即使用 explode() 或使用 preg_match 等。
但我这样做的方式是with pathinfo:
$path_info = pathinfo($filename);
echo $path_info['extension'], "\n";
【讨论】:
【参考方案5】:你想使用正则表达式:
preg_match('/\.([^\.]+)$/', $filename);
您可以通过here 对其进行测试,看看它是否能根据您的输入得到您想要的结果。
【讨论】:
我不太关心你的回答,因为有几个本机选项可以解决这个问题,但为漂亮的在线 reg-ex 测试员 +1 了!【参考方案6】:见answer:
$ext = pathinfo($filename, PATHINFO_EXTENSION);
【讨论】:
哪个更快? ($imgname, strlen($imgname) - 4, 4);或 pathinfo($filename, PATHINFO_EXTENSION); @zPuls3pathinfo($filename, PATHINFO_EXTENSION);
更准确,因为可能的扩展长度不同。以上是关于从文件名中获取扩展名,如变量[重复]的主要内容,如果未能解决你的问题,请参考以下文章
使用 PHP 从 URL 字符串中获取文件路径/扩展名 [重复]