如果您只想获取文件名而不使用奇怪的
<?php
pathinfo($file->getBasename(), PATHINFO_FILENAME);
?>
您可以使用(也很奇怪,但看起来更好)
<?php
$file->getBasename('.'.$file->getExtension());
?>
PS:为什么有 getFilename?当它返回与 getBasename 相同的东西时?我必须做这个丑陋的东西^而不是简单的 getFilename...
(PHP 5 >= 5.2.2, PHP 7, PHP 8)
SplFileInfo::getBasename — 获取文件的基名
此方法返回文件、目录或链接的基名(不包含路径信息)。
SplFileInfo::getBasename() 考虑区域设置,因此,为了使其能够正确识别包含多字节字符路径的基名,必须使用 setlocale() 函数设置匹配的区域设置。
suffix
可选的后缀,用于从返回的基名中省略。
返回不包含路径信息的基名。
示例 #1 SplFileInfo::getBasename() 例子
<?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"
如果您只想获取文件名而不使用奇怪的
<?php
pathinfo($file->getBasename(), PATHINFO_FILENAME);
?>
您可以使用(也很奇怪,但看起来更好)
<?php
$file->getBasename('.'.$file->getExtension());
?>
PS:为什么有 getFilename?当它返回与 getBasename 相同的东西时?我必须做这个丑陋的东西^而不是简单的 getFilename...
同意,这太傻了。为什么不使 getFileName() 只返回不带扩展名的字符串。然后,将有一种方法可以返回所有不同的排列,而无需进行奇怪的编码。
getBaseName()
getExtention()
getFileName()
虽然由于命名法,让 getBaseName() 返回不带扩展名的文件名更有意义,因为 getFileName() 有点暗示它带有文件扩展名。
与 basename 类似,如果文件名以非 ASCII 字符开头且区域设置未设置为匹配的字符集,此方法也会出现损坏
$ 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"