PHP Conference Japan 2024

basename

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

basename返回路径的尾部名称组件

描述

basename(字符串 $path, 字符串 $suffix = ""): 字符串

给定一个包含文件或目录路径的字符串,此函数将返回尾部名称组件。

注意:

basename() 对输入字符串进行简单操作,不了解实际文件系统或路径组件(如 "..")。

警告

basename() 是区域设置感知的,因此要使其能够使用多字节字符路径查看正确的基本名称,必须使用 setlocale() 函数设置匹配的区域设置。如果 path 包含当前区域设置中无效的字符,则 basename() 的行为未定义。

参数

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)

参见

添加注释

用户贡献的注释 4 条注释

匿名
7 年前
很遗憾,经过 20 年的发展,我们还没有 mb_basename()!

// 在 Windows 和 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 '';
}
(删除) dot nasretdinov at (删除) dot gmail dot com
16 年前
在我的情况下,只有一个变体对我的俄语 UTF-8 字母有效

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

它适用于 UNIX 服务器
KOmaSHOOTER at gmx dot de
19 年前
如果您想要文件所在的当前路径而不是完整路径,请使用此方法 :)

<?php
echo('dir = '.basename (dirname($_SERVER['PHP_SELF']),"/"));
// 返回当前使用的目录的名称
?>

示例

www 目录:domain.com/temp/2005/january/t1.php

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

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

如果您将这两个结合起来,您将得到以下结果
<?php
echo('dir = '.basename (dirname($_SERVER['PHP_SELF']),"/"));
// 返回:january
?>

对于完整路径,请使用此方法
<?php
echo(' PHP_SELF <br>'.$_SERVER['PHP_SELF'].'<br><br>');
// 返回:/temp/2005/january/t1.php
?>
瑞典男孩
15 年前
这是一种快速获取仅文件名(不带扩展名)的方法,无论文件具有什么后缀。

<?php

// 您的文件
$file = 'image.jpg';

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

echo
$file_name; // 输出 'image'

?>
To Top