ZetCode

PHP dirname 函数

最后修改于 2025 年 4 月 3 日

PHP dirname 函数从完整路径字符串中提取目录路径组件。它对于处理文件系统路径至关重要。

基本定义

dirname 函数返回给定路径的父目录路径。它接受两个参数:路径字符串和一个可选的 levels 参数。

语法: dirname(string $path, int $levels = 1): string。该函数是二进制安全的,并且适用于 Unix 和 Windows 路径。

dirname 基本示例

这展示了 dirname 提取目录的最简单用法。

basic_dirname.php
<?php

declare(strict_types=1);

$path = "/var/www/html/index.php";
$directory = dirname($path);

echo $directory; // Outputs: /var/www/html

这从完整路径中提取 "/var/www/html"。该函数返回给定文件路径的父目录。

多层级示例

第二个参数可以向上遍历多个目录层级。

dirname_levels.php
<?php

declare(strict_types=1);

$path = "/var/www/html/index.php";
$directory = dirname($path, 2);

echo $directory; // Outputs: /var

在这里,我们从文件路径向上遍历两个目录层级。levels 参数控制要向上遍历多少个父目录。

Windows 路径示例

dirname 使用反斜杠处理 Windows 路径。

windows_path.php
<?php

declare(strict_types=1);

$path = "C:\\Windows\\System32\\kernel32.dll";
$directory = dirname($path);

echo $directory; // Outputs: C:\Windows\System32

该函数正确处理 Windows 风格的路径。它返回给定文件路径的父目录。

URL 路径示例

dirname 也可以从 URL 中提取目录。

url_path.php
<?php

declare(strict_types=1);

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

echo $directory; // Outputs: https://example.com/images

这从 URL 中提取目录部分。请注意,dirname 不验证 URL - 它将它们作为字符串处理。

边缘情况

dirname 在一些值得注意的边缘情况下有特定的行为。

edge_cases.php
<?php

declare(strict_types=1);

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

echo dirname($path1); // Outputs: /var/www
echo dirname($path2); // Outputs: /var/www
echo dirname($path3); // Outputs: .

对于目录路径,它返回父目录。对于简单文件名,它返回 ".". 尾部的斜杠不会影响结果。

最佳实践

来源

PHP dirname 文档

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

作者

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

列出 所有 PHP 文件系统函数