PHP basename 函数
最后修改于 2025 年 4 月 3 日
PHP 的 basename
函数从路径字符串中提取文件名部分。它对于以跨平台的方式处理文件路径非常有用。
基本定义
basename
函数返回路径的最后一个名称组件。它接受两个参数:路径字符串和一个可选的要删除的后缀。
语法:basename(string $path, string $suffix = ""): string
。该函数是二进制安全的,并且可以同时处理 Unix 和 Windows 路径。
基本的 basename 示例
这展示了 basename
最简单的用法,用于提取文件名。
<?php declare(strict_types=1); $path = "/var/www/html/index.php"; $filename = basename($path); echo $filename; // Outputs: index.php
这会从完整路径中提取 "index.php"。无论输入路径中使用何种目录分隔符,该函数都能正常工作。
删除文件扩展名
第二个参数可以从结果中删除指定的后缀。
<?php declare(strict_types=1); $path = "/var/www/html/index.php"; $filename = basename($path, ".php"); echo $filename; // Outputs: index
在这里,我们从结果中删除了 ".php" 扩展名。请注意,后缀必须完全匹配,包括在区分大小写的文件系统上的大小写。
Windows 路径示例
basename
可以处理使用反斜杠的 Windows 路径。
<?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 中提取最后一个组件。
<?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 - 它只是将它们作为字符串进行处理。
多个目录级别
该函数可以处理包含多个目录级别的路径。
<?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
在处理边缘情况时有一些有趣的特性。
<?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
对于目录路径(以分隔符结尾),它会返回目录名。对于简单文件名,它会返回文件名不变。尾部斜杠会被忽略。
最佳实践
- 验证输入: 在处理之前检查路径是否存在。
- 处理编码: 注意路径中的字符编码。
- 安全:在文件系统操作中使用时,对输入进行清理。
- 跨平台: 适用于 Unix 和 Windows 路径。
来源
本教程通过实际示例介绍了 PHP 的 basename
函数,展示了它在不同场景下的用法。
作者
列出 所有 PHP 文件系统函数。