CakeFest 2024: The Official CakePHP Conference

SplFileInfo::getBasename

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

SplFileInfo::getBasenameLit le nom de base du fichier

Description

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

Cette méthode retourne le nom du fichier, dossier ou lien sans le chemin.

Attention

SplFileInfo::getBasename() a conscience de la locale, donc pour voir la bonne basename avec un chemin qui contient des caractères multioctets, la locale correspondante doit être définie en utilisant la fonction setlocale().

Liste de paramètres

suffix

Un suffixe optionnel à omettre dans le nom de fichier retourné.

Valeurs de retour

Retourne le nom du fichier, sans les informations de chemin.

Exemples

Exemple #1 Exemple avec 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'));
?>

Résultat de l'exemple ci-dessus est similaire à :

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

Voir aussi

add a note

User Contributed Notes 3 notes

up
33
adam dot schubert at sg1-game dot net
8 years ago
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...
up
9
schuyler dot bos at gmail dot com
7 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
3
glen at pld-linux dot org
6 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