【发布时间】:2011-09-13 07:55:08
【问题描述】:
我有一个变量$filename="filename.ext" 或$filename="filena.m.e.ext" 等等。如何从变量/字符串中提取扩展名(此处为ext)?变量可能会改变或可能有多个点..在这种情况下,我想得到最后一个点之后的部分..
【问题讨论】:
标签: php file-extension
我有一个变量$filename="filename.ext" 或$filename="filena.m.e.ext" 等等。如何从变量/字符串中提取扩展名(此处为ext)?变量可能会改变或可能有多个点..在这种情况下,我想得到最后一个点之后的部分..
【问题讨论】:
标签: php file-extension
你可以这样定义一个函数:
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 对象
【讨论】:
您可以使用 . 分解字符串,然后取最后一个数组项:
$filename = "file.m.e.ext";
$filenameitems = explode(".", $filename);
echo $filenameitems[count($filenameitems) - 1]; // .ext
// or echo $filenameitem[-1];
【讨论】:
filename.tar.gz 呢?
您可以使用路径信息查询。
$info = pathinfo($file);
在哪里
$info['extension']
包含扩展名
【讨论】:
有很多方法可以做到这一点,即使用 explode() 或使用 preg_match 等。
但我这样做的方式是with pathinfo:
$path_info = pathinfo($filename);
echo $path_info['extension'], "\n";
【讨论】:
【讨论】:
见answer:
$ext = pathinfo($filename, PATHINFO_EXTENSION);
【讨论】:
pathinfo($filename, PATHINFO_EXTENSION); 更准确,因为可能的扩展长度不同。