SplFileInfo::getBasename

(PHP 5 >= 5.2.2, PHP 7, PHP 8)

SplFileInfo::getBasename获取文件的基名

说明

public SplFileInfo::getBasename(string $suffix = ""): string

此方法返回文件、目录或链接的基名,不包含路径信息。

注意

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"

参见

添加说明

用户贡献说明 3 个说明

adam dot schubert at sg1-game dot net
8 年前
如果您只想获取文件名而不使用奇怪的

<?php
pathinfo
($file->getBasename(), PATHINFO_FILENAME);
?>

您可以使用(也很奇怪,但看起来更好)

<?php
$file
->getBasename('.'.$file->getExtension());
?>

PS:为什么会有 getFilename ? 当它返回与 getBasename 相同的东西时? 我必须这样做丑陋的事情^而不是简单的 getFilename...
schuyler dot bos at gmail dot com
7 年前
同意,这太愚蠢了。为什么不将 getFileName() 设为只返回没有扩展名的字符串。然后,将有一个方法来返回所有不同的排列,而不必进行奇怪的编码。

getBaseName()
getExtention()
getFileName()

尽管由于命名法的原因,可能更有意义的是让 getBaseName() 返回没有扩展名的文件名,因为 getFileName() 似乎暗示它带有一个文件扩展名。
glen at pld-linux dot org
6 年前
与 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"
To Top