basename

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

basenameПовертає останній компонент рядка шляху

Опис

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

При передачі рядка, що містить шлях до файла чи директорії, ця функція повертає останній компонент наданого рядка.

Зауваження:

Можна сказати, що basename() працює умовно зі "шляхами", бо вона фактично не дивиться у файлову систему, та не враховує таких компонентів як "..".

Застереження

basename() враховує налаштування локалі, отже щоб мати коректний результат при роботі з мультибайтними рядками, потрібно встановлювати відповідну локаль використовуючи функцію setlocale().

Параметри

path

Шлях.

На Windows, в якості роздільників директорій використовується як прямий слеш (/) так і зворотній (\). В інших середовищах - це прямий слеш (/).

suffix

Якщо рядок закінчується на suffix, він також буде обрізатись.

Значення, що повертаються

Повертає кінцевий компонент рядка path (шляху).

Приклади

Приклад #1 Використання basename()

<?php
+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() - Returns a parent directory's path
  • pathinfo() - Returns information about a file path

add a note

User Contributed Notes 4 notes

up
55
Anonymous
8 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 unixfunction mb_basename($path) {    if (preg_match('@^.*[\\\\/]([^\\\\/]+)$@s', $path, $matches)) {        return $matches[1];    } else if (preg_match('@^([^\\\\/]+)$@s', $path, $matches)) {        return $matches[1];    }    return '';}
up
11
(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
3
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'?>
up
1
KOmaSHOOTER at gmx dot de
20 years ago
If you want the current path where youre file is and not the full path then use this :)<?phpecho('dir = '.basename (dirname($_SERVER['PHP_SELF']),"/"));    // retuns the name of current used directory?>Example: www dir: domain.com/temp/2005/january/t1.php<?phpecho('dirname <br>'.dirname($_SERVER['PHP_SELF']).'<br><br>');    // returns: /temp/2005/january?><?phpecho('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    ?>
To Top