If you want to get only filename and dont want to use weird:
<?php
pathinfo($file->getBasename(), PATHINFO_FILENAME);
?>
You can use (also weird but ~better looking):
<?php
$file->getBasename('.'.$file->getExtension());
?>
PS: Why there is getFilename ? when it returns ~same stuff as getBasename ? I have to do this ugly stuff^ instead of simple getFilename...SplFileInfo::getBasename
(PHP 5 >= 5.2.2, PHP 7, PHP 8)
SplFileInfo::getBasename — Gets the base name of the file
Description
This method returns the base name of the file, directory, or link without path info.
Caution
SplFileInfo::getBasename() is locale aware, so for it to see the correct basename with multibyte character paths, the matching locale must be set using the setlocale() function.
Parameters
suffix-
Optional suffix to omit from the base name returned.
Return Values
Returns the base name without path information.
Examples
Example #1 SplFileInfo::getBasename() example
<?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'));
?>The above example will output something similar to:
string(8) "file.txt" string(8) "file.txt" string(4) "file"
+add a note
User Contributed Notes 3 notes
adam dot schubert at sg1-game dot net ¶
10 years ago
schuyler dot bos at gmail dot com ¶
9 years ago
Agreed, this is just silly. why not make getFileName() just return the string without extension. then, there would be a method to return all the different permutations without having to do weird coding.
getBaseName()
getExtention()
getFileName()
although due to nomenclature it might make more sense to have getBaseName() return the file name without extension, since getFileName() would kinda suggest it has a file extension on it.
glen at pld-linux dot org ¶
8 years ago
similarly to basename, this method also suffers corruption if filename starts with non-ascii and locale not set to matching charset
$ LC_ALL=C php -r 'var_dump(basename("ämb.er")); $fi = new SplFileInfo("äm.ber"); var_dump($fi->getBasename());';
string(5) "mb.er"
string(5) "m.ber"
$ LC_ALL=en_US.UTF-8 php -r 'var_dump(basename("ämb.er")); $fi = new SplFileInfo("äm.ber"); var_dump($fi->getBasename());';
string(7) "ämb.er"
string(7) "äm.ber"