php - 如何扫描特定文件的目录和所有子目录(扩展名为 .php)
问题描述
我有一个这样的文件夹结构:
Examplefolder
|---Folder1
| |--- file1.php
|---Folder2
| |---Subfolder
| |--- subfile1.php
| |--- subfile2.html
|---Folder3
|---file2.php
如您所见, examplefolder是主文件夹。它可以包含普通的 php oder oder 文件扩展。在主文件夹内还有子文件夹(如文件夹 1 和文件夹 2)。一个子文件夹里面可以有更多的文件夹。
现在我想扫描示例文件夹以查找扩展名为 .php 的文件,这些文件应该保存到一个数组中。这将如何运作?我还尝试了一种显示所有文件的方法,但我只想要带有 php 扩展名的文件。
我的示例如下所示:
if (file_exists($path) && is_dir($path))
{
$result = scandir($path);
$files = array_diff($result, array('.', '..'));
if (count($files) > 0)
{
foreach ($files as $file)
{
if (is_file("$path/$file"))
{
$array[] = $file;
}
else if (is_dir("$path/$file"))
{
$array[] = $this->getComponentPathNames("$path/$file");
}
}
}
}
解决方案
这可以通过一个简单的 if 语句使用 substr() 函数来获取文件名的最后 4 个字符来实现。像这样:
$file = "test-file.php";
if ((substr($file, -4)) == ".php") {
echo "This";
} else {
echo "this one";
}
因此,如果最后 4 个字符等于 .php,则继续,否则执行其他操作。
推荐阅读
- typescript - Typescript Fetch API 返回 Promise
或承诺 - python - while循环中的空白图
- python - 如何从模型的视图访问序列化器字段?
- java - hibernate-orm-panache-resteasy: {"error":"id to load is required for loading","code":500} running a native build
- azure - 是否可以将 Azure Dev Spaces 与 API 管理一起使用?
- image - Stack Reslicing 后直方图的差异
- gcc - 将 GCC 的输出更改为 0-set(清除)操作
- swift - 使用 po 时 Xcode 代码控制台打印空白
- r - 闪亮的路由器附加路由
- amazon-web-services - 如何将云分发 URL 重定向到自定义 URL