首页 > 解决方案 > 如何扫描特定文件的目录和所有子目录(扩展名为 .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");
                    }
                }
            }
        }

标签: phpparsingdirectory

解决方案


这可以通过一个简单的 if 语句使用 substr() 函数来获取文件名的最后 4 个字符来实现。像这样:

$file = "test-file.php";

if ((substr($file, -4)) == ".php") {
    echo "This";
} else {
    echo "this one";
}

因此,如果最后 4 个字符等于 .php,则继续,否则执行其他操作。


推荐阅读