ZetCode

PHP pathinfo 函数

最后修改于 2025 年 4 月 3 日

PHP pathinfo 函数返回有关文件路径的信息。它可以提取目录名、文件名和扩展名组件。

基本定义

pathinfo 函数解析一个路径并返回一个包含这些组件的关联数组或字符串。它接受两个参数:路径和可选的标志。

语法:pathinfo(string $path, int $flags = PATHINFO_ALL): mixed。flags 参数决定要返回哪些组件。

pathinfo 基本示例

这展示了使用 pathinfo 获取所有组件的最简单用法。

basic_pathinfo.php
<?php

declare(strict_types=1);

$path = "/var/www/html/index.php";
$info = pathinfo($path);

print_r($info);

这返回一个包含所有路径组件的数组。dirname 是目录,basename 是完整的文件名,extension 是文件扩展名。

获取特定组件

您可以使用 flags 参数请求特定组件。

specific_components.php
<?php

declare(strict_types=1);

$path = "/var/www/html/index.php";

$dirname = pathinfo($path, PATHINFO_DIRNAME);
$basename = pathinfo($path, PATHINFO_BASENAME);
$extension = pathinfo($path, PATHINFO_EXTENSION);
$filename = pathinfo($path, PATHINFO_FILENAME);

echo "Dir: $dirname\n";       // /var/www/html
echo "Base: $basename\n";     // index.php
echo "Ext: $extension\n";     // php
echo "File: $filename\n";     // index

每个标志仅返回一个组件作为字符串。当您只需要一部分时,这比获取整个数组更有效。

Windows 路径示例

pathinfo 适用于使用反斜杠的 Windows 路径。

windows_path.php
<?php

declare(strict_types=1);

$path = "C:\\Windows\\System32\\kernel32.dll";
$info = pathinfo($path);

print_r($info);

该函数正确处理 Windows 风格的路径。它返回组件,无论输入中使用哪种目录分隔符样式。

URL 路径示例

pathinfo 也可以解析 URL 路径以提取组件。

url_path.php
<?php

declare(strict_types=1);

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

print_r($info);

这从 URL 路径中提取组件。请注意,pathinfo 不验证 URL - 它将它们作为字符串处理。

没有扩展名的文件

该函数正确处理没有扩展名的文件。

no_extension.php
<?php

declare(strict_types=1);

$path = "/home/user/docs/README";
$info = pathinfo($path);

print_r($info);

对于没有扩展名的文件,数组中不存在 extension 键。filenamebasename 相同。

边缘情况

pathinfo 在某些边缘情况下有一些有趣的特性。

edge_cases.php
<?php

declare(strict_types=1);

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

print_r(pathinfo($path1));
print_r(pathinfo($path2));
print_r(pathinfo($path3));

对于目录路径,basename 返回目录名称。对于简单的文件名,它只返回文件名。尾部的斜杠将被忽略。

最佳实践

来源

PHP pathinfo 文档

本教程介绍了 PHP pathinfo 函数,并提供了实际示例,展示了它在不同场景中的用法。

作者

我叫 Jan Bodnar,是一位充满激情的程序员,拥有丰富的编程经验。自 2007 年以来,我一直在撰写编程文章。迄今为止,我撰写了 1,400 多篇文章和 8 本电子书。我拥有超过十年的编程教学经验。

列出 所有 PHP 文件系统函数