PHP - 遍历文件夹并显示HTML内容

时间:2010-05-04 21:42:14

标签: php wordpress iteration loops

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

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

我相信我可以管理,但概念本身是迭代几个文件夹,然后查找所有index.htmindex.html页面并显示它们。

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

是否有脚本,功能,片段或仅仅是一些信息来创建这样一个(可能是简单的)预览功能?

1 个答案:

答案 0 :(得分:1)

glob('*.html')如果它们都在一个目录中,它们将起作用。

如果你想走一个文件树 - 检查当前目录以及子目录(子目录)的子目录和子目录中的所有内容 - 那么你有几个选项。

一种方法是使用unix find命令和PHP系统调用方法之一。类似的东西:

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

will get you output that looks something like

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

Another thing you could do is write a recursive function that uses chdir and readdir or maybe scandir, something like:

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);
    }
}

Then, write another function:

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

And call it like this:

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

或者,编写dir_walk,这样它就可以接受一个带有方法调用的对象。这里有一些变化。