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 字符串中需要转义反斜杠,或者您可以使用也可以工作的正斜杠。
最佳实践
- 权限检查:在检查之前验证读取权限。
- 错误处理:与 file_exists 结合使用以进行稳健的检查。
- 符号链接:使用 is_link 结合 is_dir 来处理符号链接。
- 性能:在重复检查时缓存结果。
- 安全:在进行文件系统操作之前对路径进行清理。
来源
本教程通过实用的示例介绍了 PHP 的 is_dir
函数,展示了在不同场景下的目录验证。
作者
列出 所有 PHP 文件系统函数。