SPLFileInfo:获取没有扩展名的文件名

时间:2015-03-11 20:38:43

标签: php filenames file-extension spl fileinfo

我正在访问SPLFileInfo对象中的许多文件。我看到了获取文件的路径,文件名甚至扩展名的方法。有没有办法获得没有扩展名的文件名?这是我一直在使用的代码,但我希望能够获得更优雅的代码。是否有开箱即用的解决方案?

$file = new SplFileInfo("path/to/file.txt.zip"); 

echo 'basename: '.$file->getBasename();  
echo PHP_EOL;
echo 'filename: '.$file->getFilename();
echo PHP_EOL;    
echo 'extension: '.$file->getExtension();
echo PHP_EOL;    
echo 'basename w/o extension: '.$file->getBasename('.'.$file->getExtension());

>>OUTPUT
>>basename: file.txt.zip
>>filename: file.txt.zip
>>extension: zip
>>basename w/o extension: file.txt

2 个答案:

答案 0 :(得分:15)

我迟到了,所有的积分应该转到@salathe作为第一个帮助OP,但这里the link to PHP manual用于基本名称功能。基本上,你获得扩展,然后在前面添加一个点.,最后使用basename函数来获取名称,如下所示:

$file->getBasename('.' . $file->getExtension())

快速阅读,请参阅PHP手册页的例子:

$info = new SplFileInfo('file.txt');
var_dump($info->getBasename());

$info = new SplFileInfo('/path/to/file.txt');
var_dump($info->getBasename());

$info = new SplFileInfo('/path/to/file.txt');
var_dump($info->getBasename('.txt'));

输出:

string(8) "file.txt"
string(8) "file.txt"
string(4) "file" 

答案 1 :(得分:0)

我找不到像.net这样的官方消息 - Path.GetFileNameWithoutExtension https://msdn.microsoft.com/en-us/library/system.io.path.getfilenamewithoutextension%28v=vs.110%29.aspx

以下是我使用的内容 preg_replace(" /。[^。] + $ /","",$ file-> getBasename());

我用" file.txt.zip"进行了测试。确保它返回" file.txt",而不是"文件"