ZetCode

PHP is_dir 函数

最后修改于 2025 年 4 月 3 日

PHP 的 is_dir 函数用于检查一个路径是否为目录。在需要目录验证的文件系统操作中,它至关重要。

基本定义

is_dir 函数检查给定的文件名是否为目录。如果文件名存在且为目录,则返回 true,否则返回 false。

语法:is_dir(string $filename): bool。该函数会缓存结果,因此在调用 clearstatcache() 之前,多次调用可能会返回缓存的值。

基本的 is_dir 示例

这展示了 is_dir 检查目录的最简单用法。

basic_is_dir.php
<?php

declare(strict_types=1);

$path = "/var/www/html";
$isDirectory = is_dir($path);

var_dump($isDirectory); // Outputs: bool(true) if directory exists

这会检查 "/var/www/html" 是否为目录。只有当路径存在且是目录而不是文件或符号链接时,该函数才返回 true。

检查相对路径

is_dir 可以处理相对于当前工作目录的相对路径。

relative_path.php
<?php

declare(strict_types=1);

$path = "docs";
$isDirectory = is_dir($path);

echo $isDirectory ? "Directory exists" : "Not a directory";

这会检查 "docs" 是否是相对于当前脚本位置的目录。请记住,相对路径取决于当前工作目录。

检查不存在的路径

对于不存在或不是目录的路径,is_dir 返回 false。

nonexistent_path.php
<?php

declare(strict_types=1);

$path = "/nonexistent/path";
$isDirectory = is_dir($path);

var_dump($isDirectory); // Outputs: bool(false)

对于不存在的路径,该函数返回 false。它不会为无效路径抛出错误,因此可以安全地进行存在性检查。

检查文件与目录

此示例演示了区分文件和目录。

file_vs_dir.php
<?php

declare(strict_types=1);

$path1 = "/var/www/html/index.php";
$path2 = "/var/www/html";

$result1 = is_dir($path1) ? "Directory" : "Not directory";
$result2 = is_dir($path2) ? "Directory" : "Not directory";

echo $result1 . "\n"; // Outputs: Not directory
echo $result2 . "\n"; // Outputs: Directory

这展示了 is_dir 如何正确识别文件与目录。在需要不同处理方式的文件系统遍历中非常有用。

Windows 路径示例

is_dir 可以处理使用反斜杠的 Windows 风格路径。

windows_path.php
<?php

declare(strict_types=1);

$path = "C:\\Windows\\System32";
$isDirectory = is_dir($path);

echo $isDirectory ? "Valid Windows directory" : "Invalid directory";

该函数可以正确处理 Windows 路径。请注意,在 PHP 字符串中需要转义反斜杠,或者您可以使用也可以工作的正斜杠。

最佳实践

来源

PHP is_dir 文档

本教程通过实用的示例介绍了 PHP 的 is_dir 函数,展示了在不同场景下的目录验证。

作者

我的名字是 Jan Bodnar,我是一位充满激情的程序员,拥有丰富的编程经验。我从 2007 年开始撰写编程文章,至今已撰写了 1,400 多篇文章和 8 本电子书。我在编程教学方面拥有十多年的经验。

列出 所有 PHP 文件系统函数