basename

(PHP 4, PHP 5, PHP 7, PHP 8)

basenameLiefert den letzten Namensteil einer Pfadangabe

Beschreibung

basename(string $path, string $suffix = ""): string

Aus einer übergebenen Zeichenkette, die den Pfad zu einer Datei oder einem Verzeichnis enthält, gibt diese Funktion den letzten Namensteil zurück.

Hinweis:

basename() arbeitet nur mit der Eingabezeichenkette und beachtet nicht das eigentliche Dateisystem oder Pfadbestandteile wie etwa "..".

Achtung

basename() beachtet die Spracheinstellungen (Locale); soll sie die korrekte Namensbasis in Pfaden mit Mehrbytezeichen erkennen, muss daher die passende Locale mit der Funktion setlocale() gesetzt werden. Wenn path Zeichen enthält, die für die aktuelle Locale ungültig sind, ist das Verhalten von basename() undefiniert.

Parameter-Liste

path

Ein Pfad.

Unter Windows wird sowohl der Slash (/) als auch der Backslash (\) als Trennzeichen bei Pfadangaben benutzt. Unter anderen Betriebssystemen hingegen nur der Slash (/).

suffix

Wenn der Namensteil mit suffix endet, wird dieser ebenfalls abgetrennt.

Rückgabewerte

Gibt den abschließenden Namen des übergebenen path zurück.

Beispiele

Beispiel #1 basename()-Beispiel

<?php
echo "1) ".basename("/etc/sudoers.d", ".d").PHP_EOL;
echo
"2) ".basename("/etc/sudoers.d").PHP_EOL;
echo
"3) ".basename("/etc/passwd").PHP_EOL;
echo
"4) ".basename("/etc/").PHP_EOL;
echo
"5) ".basename(".").PHP_EOL;
echo
"6) ".basename("/");
?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

1) sudoers
2) sudoers.d
3) passwd
4) etc
5) .
6)

Siehe auch

  • dirname() - Liefert den Pfad des übergeordneten Verzeichnisses
  • pathinfo() - Liefert Informationen über einen Dateipfad

add a note

User Contributed Notes 4 notes

up
53
Anonymous
7 years ago
It's a shame, that for a 20 years of development we don't have mb_basename() yet!

// works both in windows and unix
function mb_basename($path) {
if (preg_match('@^.*[\\\\/]([^\\\\/]+)$@s', $path, $matches)) {
return $matches[1];
} else if (preg_match('@^([^\\\\/]+)$@s', $path, $matches)) {
return $matches[1];
}
return '';
}
up
10
(remove) dot nasretdinov at (remove) dot gmail dot com
16 years ago
There is only one variant that works in my case for my Russian UTF-8 letters:

<?php
function mb_basename($file)
{
return
end(explode('/',$file));
}
><

It is intented for UNIX servers
up
4
KOmaSHOOTER at gmx dot de
19 years ago
If you want the current path where youre file is and not the full path then use this :)

<?php
echo('dir = '.basename (dirname($_SERVER['PHP_SELF']),"/"));
// retuns the name of current used directory
?>

Example:

www dir: domain.com/temp/2005/january/t1.php

<?php
echo('dirname <br>'.dirname($_SERVER['PHP_SELF']).'<br><br>');
// returns: /temp/2005/january
?>

<?php
echo('file = '.basename ($PHP_SELF,".php"));
// returns: t1
?>

if you combine these two you get this
<?php
echo('dir = '.basename (dirname($_SERVER['PHP_SELF']),"/"));
// returns: january
?>

And for the full path use this
<?php
echo(' PHP_SELF <br>'.$_SERVER['PHP_SELF'].'<br><br>');
// returns: /temp/2005/january/t1.php
?>
up
5
swedish boy
15 years ago
Here is a quick way of fetching only the filename (without extension) regardless of what suffix the file has.

<?php

// your file
$file = 'image.jpg';

$info = pathinfo($file);
$file_name = basename($file,'.'.$info['extension']);

echo
$file_name; // outputs 'image'

?>
To Top