【问题标题】:Read file structure into an array, but only specific files将文件结构读入数组,但只读取特定文件
【发布时间】:2011-01-11 18:40:34
【问题描述】:

我的目录结构如下所示:

/expandables 
- folder
- folder
- folder
- folder 
  - BannerInfo.txt
  - index.html

folder 中的每一个都具有完全相同的结构。一个名为BannerInfo.txtindex.html 的文件。如果重要的话,大约有 250 个这样的文件夹。

我想遍历这些文件夹并将每个 index.html 文件存储到一个数组中。 index.html 文件的内部只是一些简单的 HTML 和 Javascript,我想将其读入字符串以便稍后显示。

我正在努力解决如何从各个文件夹中仅过滤掉 index.html 文件。

这样做的目的是因为我想随机选择一个index.html文件并将内容放入一个textarea。我想我可以在返回的数组上做一个简单的array_rand() 并吐出字符串。

有什么想法吗?

编辑:

我想出了这样的东西:

<?

    $expandables = array();

    $expandables = scandir("expandables/");

    $count = 0;

    foreach($expandables as $expandable) {
        if ($expandable != "." && $expandable != "..") {
            $expandableCode = "expandables/" . $expandable . "/index.html";

            // get value of index.html for select list
            $expandableValue = file_get_contents($expandableCode);


            // echo out options
            echo "<option value='$expandableValue'>$expandable</option>";

        }
    }       



?>

但这并不完全正确。有没有办法在我从选择框中选择 index.html 内容后动态填充我的 textarea?

【问题讨论】:

标签: php arrays search file-io


【解决方案1】:

您可以使用readdir()scandir() 来获取每个目录的内容(即文件名)。使用is_dir() 检查找到的项目是文件还是目录。如果是目录,请在该目录上重复该过程。如果是文件,检查是否是'index.html',如果是,则放入数组中。

将文件名(包括路径)存储在数组中而不是内容可能会更好。执行后者将导致在每个请求上读取所有 250 个文件。

遍历目录可能已经够麻烦了,所以最好也缓存这个列表。

您可以将路径数组保存到文件中。然后,您可以将该文件加载到一个数组中,这比检查所有这些目录要快。如果该文件不存在,您可以运行该过程来创建它。如果它确实存在,您可以检查它是否比一天(或任何最适合您的时间)更早。如果任何 index.html 文件不存在,您也可以运行创建文件的过程,因为它显然不再是最新的了。

如果将此数组保存为 PHP 代码,则可以包含它。如果您有像 APC 这样的 PHP 缓存,这将为您提供更好的性能。

【讨论】:

    猜你喜欢
    • 2016-06-11
    • 1970-01-01
    • 2013-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-15
    • 2013-12-16
    • 1970-01-01
    相关资源
    最近更新 更多