php实现pathinfo
获取路径信息的 PHP 实现方法
PHP 提供了内置函数 pathinfo() 用于解析文件路径信息,返回一个包含目录名、文件名、扩展名等信息的关联数组。以下是具体用法和示例:
基本用法
pathinfo() 函数接受文件路径作为参数,返回包含以下键的数组:
dirname:目录路径basename:文件名(含扩展名)extension:文件扩展名(不含点)filename:文件名(不含扩展名)
$path = '/var/www/html/example.php';
$info = pathinfo($path);
print_r($info);
输出结果:
Array
(
[dirname] => /var/www/html
[basename] => example.php
[extension] => php
[filename] => example
)
指定返回部分信息
可以通过第二个参数指定需要返回的部分:
$extension = pathinfo('/var/www/html/example.php', PATHINFO_EXTENSION);
echo $extension; // 输出 "php"
可用常量选项:
PATHINFO_DIRNAMEPATHINFO_BASENAMEPATHINFO_EXTENSIONPATHINFO_FILENAME
处理无扩展名文件
当文件没有扩展名时,extension 键不会出现在返回数组中:
$path = '/var/www/html/README';
$info = pathinfo($path);
print_r($info);
输出结果:
Array
(
[dirname] => /var/www/html
[basename] => README
[filename] => README
)
注意事项
- 路径分隔符应使用正斜杠
/(Windows 和 Unix 都兼容) - 函数会正确处理包含多个点的文件名(如
archive.tar.gz) - 对于相对路径也能正确解析
自定义实现示例
如果需要自定义路径解析逻辑,可以参考以下实现:
function custom_pathinfo($path) {
$result = [];
$result['dirname'] = rtrim(substr($path, 0, strrpos($path, '/')), '/') ?: '.';
$result['basename'] = ltrim(substr($path, strrpos($path, '/')), '/');
if (strpos($result['basename'], '.') !== false) {
$result['extension'] = substr($result['basename'], strrpos($result['basename'], '.') + 1);
$result['filename'] = substr($result['basename'], 0, strrpos($result['basename'], '.'));
} else {
$result['filename'] = $result['basename'];
}
return $result;
}
这种方法适用于需要特殊处理路径的场景,但通常建议直接使用内置的 pathinfo() 函数。







