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 '';
}basename
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
basename
Референца за `function.basename.php` со подобрена типографија и навигација.
basename
(PHP 4, PHP 5, PHP 7, PHP 8)
basename — Враќа последна компонента на името на патеката
= NULL
Даден стринг што ја содржи патеката до датотека или директориум, оваа функција ќе ја врати последната компонента на името.
Забелешка:
basename() работи наивно на влезната низа и не е свесен за вистинскиот систем на датотеки, или компоненти на патеката како што се "
..".
basename() е свесна за локалот, така што за да го види правилното основно име со патеки со повеќебајтни знаци, соодветниот локал мора да биде поставен со користење на setlocale() функција. Ако path содржи знаци кои се невалидни за тековниот локал, однесувањето на basename() е недефинирано.
Параметри
path-
Патека.
На Windows, и коса црта (
/) и обратна коса црта (\) се користат како знак за разделување на директориуми. Во други средини, тоа е косата црта (/). suffix-
Ако компонентата на името завршува со
suffixова исто така ќе биде отсечено.
Вратени вредности
Враќа основно име на даденото path.
Примери
Пример #1 basename() example
<?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 Пример што покажува затворачка ознака што го опфаќа последниот нов ред
1) sudoers 2) sudoers.d 3) passwd 4) etc 5) . 6)
Види Исто така
- dirname() - Враќа патека на родителска директорија
- pathinfo() - Враќа информации за патеката на датотеката
Белешки од корисници 5 белешки
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 serversHere 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'
?>You might expect that echo basename('directory_name/') would return an empty string. Instead, it returns 'directory_name', without the slash.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
?>