获取文件扩展名[重复]

Posted

技术标签:

【中文标题】获取文件扩展名[重复]【英文标题】:Get the file extension [duplicate] 【发布时间】:2012-03-24 16:21:08 【问题描述】:

我在“。”上爆炸。获取文件格式和名称:

list($txt, $ext) = explode(".", $name);

问题是某些文件的名称带有点。

如何在最后一个“。”上展开这样我就可以从pic.n2.jpg得到$name=pic.n2$ext=jpg

【问题讨论】:

您使用的是本地文件还是随机文本? 【参考方案1】:

最好使用上面的一种解决方案,但也有使用explode函数的解决方案:

$filename = "some.file.name.ext";
list($ext, $name) = explode(".", strrev($filename), 2);
$name = strrev($name);
$ext = strrev($ext);

此解决方案的作用如下: 1. 反转字符串,所以它看起来像:txe.eman.elif.emos 2. 爆炸,你会得到类似的东西: $ext = "txe", $name = "eman.elif.emos" 3.反转每个变量以获得正确的结果

【讨论】:

【参考方案2】:
<?php
$path = 'http://www.mytest.com/public/images/portfolio/i-vis/abc.y1.jpg';
echo $path."<br/>";
$name = basename($path);
$dir = dirname($path); 
echo $name."<br/>";
echo $dir."<br/>";
$pi = pathinfo($path);
$txt = $pi['filename']."_trans";
$ext = $pi['extension'];
echo $dir."/".$txt.".".$ext;
?>

【讨论】:

【参考方案3】:

使用 PHP 的 pathinfo() 函数。

在此处查看更多信息http://php.net/manual/en/function.pathinfo.php

$file_part = pathinfo('123.test.php');

例子:

echo $file_part['extension'];
echo $file_part['filename'];

输出:

php 123.测试

【讨论】:

【参考方案4】:

使用这个

$array = explode(".", $name);
end($array);         // move the internal pointer to the end of the array
$filetype = current($array);

谢谢

【讨论】:

还有current 函数而不是你的key 获取当前元素 的迂回方式。 $filetype = end($array); 也可以。不需要最后一行。【参考方案5】:

你可以试试这样的:

<?php
$file = 'a.cool.picture.jpg';

$ext = substr($file, strrpos($file, '.')+1, strlen($file)-strrpos($file, '.'));
$name = substr($file, 0, strrpos($file, '.'));
echo $name.'.'.$ext;
?>

关键函数是 strrpos() 查找最后出现的字符(在本例中为“.”)和 substr() 返回子字符串。你找到最后一个“。”在文件中,并将其子字符串。希望对您有所帮助。

【讨论】:

我也喜欢explode功能,虽然获取文件名需要循环或内爆,而这更重要。 (虽然代码很乱,但还是同意了。) 您不必向substr 提供第三个参数,单独substr($file, strrpos($file, '.')+1) 就可以找到扩展名。【参考方案6】:

使用 Pathinfo 或 mime_content_type 获取文件类型信息

$filetype = pathinfo($file, PATHINFO_FILENAME);

$mimetype = mime_content_type($file);

【讨论】:

【参考方案7】:

你可以编写自己的函数

函数 getExtension($str)

$i = strrpos($str,".");

if (!$i) return "";

$l = strlen($str) - $i;

$ext = substr($str,$i+1,$l);

返回 $ext;

【讨论】:

【参考方案8】:
$name = pathinfo($file, PATHINFO_FILENAME);
$ext  = pathinfo($file, PATHINFO_EXTENSION);

http://www.php.net/pathinfo

【讨论】:

【参考方案9】:

使用pathinfo:

$pi = pathinfo($name);
$txt = $pi['filename'];
$ext = $pi['extension'];

【讨论】:

太棒了,比我的解决方案优雅得多

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

在java中获取文件扩展名[重复]

在PHP中获取上传文件扩展名的最佳方法/实践是啥[重复]

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

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

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

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