如果您只想获取文件名而不使用奇怪的
<?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"