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"

参考

add a note

User Contributed Notes 3 notes

up
24
adam dot schubert at sg1-game dot net
9 years ago
If you want to get only filename and dont want to use weird:<?phppathinfo($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...
up
4
schuyler dot bos at gmail dot com
8 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.
up
1
glen at pld-linux dot org
7 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"
To Top