【问题标题】:PHP - Iterate through folders and display HTML contentsPHP - 遍历文件夹并显示 HTML 内容
【发布时间】:2011-02-15 16:26:40
【问题描述】:

我目前正在尝试开发一种方法来概览我多年来创建和(合法地)下载的所有不同 Web 模板。我想过像 WordPress 那样显示它们,用一个小的预览窗口预览它的模板,显示带有样式和所有内容的具体文件。

如何将它们分成行和列并创建Ajax在预览和分页等时打开的模态窗口?

我相信我可以做到,但这个概念本身就是遍历多个文件夹,然后找到所有 index.htmindex.html 页面并显示它们。

我在 PHP 中的目录工作不多,到目前为止我发现的唯一引用和代码树桩只是列出某个目录中的所有文件,比如它包含的内容。

是否有脚本、函数、sn-p 或只是一些信息来创建这样一个(可能很简单)预览功能?

【问题讨论】:

  • 如果您能够找到代码示例来遍历目录并列出其内容,那么在我看来,您唯一缺少的部分就是将其过滤为 HTML 文件。你到底卡在哪里了?

标签: php wordpress iteration loops


【解决方案1】:

glob('*.html') 如果它们都在一个目录中,则可以使用。

如果您想遍历文件树——检查当前目录和子目录以及子目录的子目录(等)中的所有内容——那么您有几个选择。

一种方法是使用 unix find 命令与 PHP 系统调用的方法之一。比如:

find <search_root_dir> -name "*.html" -print

会得到类似的输出

search_root_dir/blah.html
search_root_dir/foo.html
search_root_dir/subdir/baz.html
search_root_dir/subdir/bah.html
...

您可以做的另一件事是编写一个使用chdirreaddirscandir 的递归函数,类似于:

function dir_walk($start_dir,$func) {
    $entries = scandir($start_dir);
    foreach($entries as $entry) {
        if($entry == '.' || $entry == '..') {
            /*skip these*/
        } else if(is_dir($entry)) {
            dir_walk($start_dir.'/'.$entry,$func);
        } else $func($start_dir.'/'.$entry);
    }
}

然后,编写另一个函数:

$html_files = array();
function record_html_files($filename) {
   global $html_files;
   if(strpos($filename,'*.html') === (strlen($filename) - 6))
     $html_files[] = $filename;
}

然后这样称呼它:

dir_walk('/path/to/search/root','record_html_files');

或者,编写 dir_walk 以便它接受一个带有您可以在内部进行的方法调用的对象。这里可能有一些变化。

【讨论】:

    猜你喜欢
    • 2021-08-05
    • 1970-01-01
    • 1970-01-01
    • 2014-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-24
    相关资源
    最近更新 更多