basename

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

basenameDosya yolunun ucundaki dosya ismi bileşenini döndürür

Açıklama

basename(string $yol, string $uzantı = ""): string

Belirtilen dosya yolunun ucundaki dosya ismi bileşenini döndürür.

Bilginize:

basename() safça girdi dizgesi üzerinde çalışır, dosya sisteminden ve ".." gibi yol bileşenlerinden haberi yoktur.

Dikkat

basename() yereli de bilmez, bundan dolayı çok baytlı karakterler içeren dosya yollarından doğru bileşeni ayırabilmesi için eşleşen yerelin setlocale() işlevi kullanılarak atanması gerekir. Eğer yol geçerli yerel için geçersiz olan karakterler içeriyorsa basename() işlevinin davranışı belirsizdir.

Bağımsız Değişkenler

yol

Dosya yolu.

Dizin ayırma karakteri olarak Windows üzerinde hem bölü ( / ) hem de ters bölü ( \ ) çizgisi kullanılabilirken diğer ortamlarda sadece bölü ( / ) çizgisi kullanılabilir.

uzantı

Dosya ismi uzantı içinde devam ediyorsa uzantı ile birlikte bu da kesilir.

Dönen Değerler

Belirtilen dosya yolunun dosya ismi bileşenini döndürür.

Örnekler

Örnek 1 - basename() örneği

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

Yukarıdaki örneğin çıktısı:

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

Ayrıca Bakınız

  • dirname() - Üst dizinin yolunu döndürür
  • pathinfo() - Bir dosya yolu hakkında bilgi döndürür

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