从文件名中获取扩展名,如变量[重复]

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); @zPuls3 pathinfo($filename, PATHINFO_EXTENSION); 更准确,因为可能的扩展长度不同。

以上是关于从文件名中获取扩展名,如变量[重复]的主要内容,如果未能解决你的问题,请参考以下文章

从内容而不是从扩展名中获取文件类型[重复]

使用 PHP 从 URL 字符串中获取文件路径/扩展名 [重复]

Shell编程-03-Shell中的特殊变量和扩展变量

获取文件扩展名[重复]

bash - 压缩多个文件,从变量中获取参数,其中一个在名称中有空格[重复]

在没有扩展名的目录中获取文件名 - Python [重复]