ZetCode

PHP basename 函数

最后修改于 2025 年 4 月 3 日

PHP 的 basename 函数从路径字符串中提取文件名部分。它对于以跨平台的方式处理文件路径非常有用。

基本定义

basename 函数返回路径的最后一个名称组件。它接受两个参数:路径字符串和一个可选的要删除的后缀。

语法:basename(string $path, string $suffix = ""): string。该函数是二进制安全的,并且可以同时处理 Unix 和 Windows 路径。

基本的 basename 示例

这展示了 basename 最简单的用法,用于提取文件名。

basic_basename.php
<?php

declare(strict_types=1);

$path = "/var/www/html/index.php";
$filename = basename($path);

echo $filename; // Outputs: index.php

这会从完整路径中提取 "index.php"。无论输入路径中使用何种目录分隔符,该函数都能正常工作。

删除文件扩展名

第二个参数可以从结果中删除指定的后缀。

basename_suffix.php
<?php

declare(strict_types=1);

$path = "/var/www/html/index.php";
$filename = basename($path, ".php");

echo $filename; // Outputs: index

在这里,我们从结果中删除了 ".php" 扩展名。请注意,后缀必须完全匹配,包括在区分大小写的文件系统上的大小写。

Windows 路径示例

basename 可以处理使用反斜杠的 Windows 路径。

windows_path.php
<?php

declare(strict_types=1);

$path = "C:\\Windows\\System32\\kernel32.dll";
$filename = basename($path);

echo $filename; // Outputs: kernel32.dll

该函数可以正确处理 Windows 风格的路径。无论输入中使用何种目录分隔符样式,它都会返回 "kernel32.dll"。

URL 路径示例

basename 也可以从 URL 中提取最后一个组件。

url_path.php
<?php

declare(strict_types=1);

$url = "https://example.com/images/logo.png";
$filename = basename($url);

echo $filename; // Outputs: logo.png

这会从 URL 中提取 "logo.png"。请注意,basename 不会验证 URL - 它只是将它们作为字符串进行处理。

多个目录级别

该函数可以处理包含多个目录级别的路径。

multi_level.php
<?php

declare(strict_types=1);

$path = "/home/user/docs/projects/php/README.md";
$filename = basename($path);

echo $filename; // Outputs: README.md

尽管有多个目录级别,basename 仍能正确地只返回 "README.md"。它只查看最后一个路径组件。

边缘情况

basename 在处理边缘情况时有一些有趣的特性。

edge_cases.php
<?php

declare(strict_types=1);

$path1 = "/var/www/html/";
$path2 = "/var/www/html";
$path3 = "filename.txt";

echo basename($path1); // Outputs: html
echo basename($path2); // Outputs: html
echo basename($path3); // Outputs: filename.txt

对于目录路径(以分隔符结尾),它会返回目录名。对于简单文件名,它会返回文件名不变。尾部斜杠会被忽略。

最佳实践

来源

PHP basename 文档

本教程通过实际示例介绍了 PHP 的 basename 函数,展示了它在不同场景下的用法。

作者

我叫 Jan Bodnar,是一名充满热情的程序员,拥有丰富的编程经验。我从 2007 年开始撰写编程文章。迄今为止,我已撰写了 1,400 多篇文章和 8 本电子书。我在教授编程方面拥有超过十年的经验。

列出 所有 PHP 文件系统函数