PHP Conference Nagoya 2025

basename

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

basenameВозвращает конечный компонент имени пути

Описание

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

Функция получит строку, которая содержит путь к файлу или каталогу, и вернёт конечный компонент имени пути.

Замечание:

Функция basename() наивно работает со входной строкой и не знает действительную файловую систему или компоненты пути наподобие «..».

Предостережение

Функция basename() учитывает региональные настройки. Поэтому, чтобы функция видела правильное базовое имя, путь которого содержит многобайтовые символы, требуется функцией setlocale() устанавливать локаль, которая соответствует этим символам. Функция basename() поведёт себя непредсказуемо, если имя пути path содержит неправильные для текущей локали символы.

Список параметров

path

Путь.

На платформах Windows как разделитель имён каталогов работает и прямой /, и обратный \ слеш. В других окружениях — прямой слеш /.

suffix

Функция также обрежет суффикс suffix, если компонент имени заканчивается этим суффиксом.

Возвращаемые значения

Функция возвращает базовое имя пути path.

Примеры

Пример #1 Пример использования функции basename()

<?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("/");

?>

Результат выполнения приведённого примера:

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

Смотрите также

  • dirname() - Возвращает путь к родительскому каталогу
  • pathinfo() - Возвращает информацию о пути к файлу

Добавить

Примечания пользователей 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