SplFileInfo::getBasename

(PHP 5 >= 5.2.2, PHP 7)

SplFileInfo::getBasenameGets the base name of the file

说明

public string SplFileInfo::getBasename ([ string $suffix ] )

This method returns the base name of the file, directory, or link without path info.

参数

suffix

Optional suffix to omit from the base name returned.

返回值

Returns the base name without path information.

范例

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'));
?>

以上例程的输出类似于:

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

参见

User Contributed Notes

schuyler dot bos at gmail dot com 28-Dec-2016 07:51
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.
adam dot schubert at sg1-game dot net 19-Feb-2016 12:11
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...