可能的重复:
PHP - 遍历文件夹并显示 HTML 内容 https://stackoverflow.com/questions/2769175/php-iterate-through-folders-and-display-html-contents
我正在尝试使用 PHP 创建一个脚本,该脚本将导航到网站的根目录,然后从那里使用scandir()
or glob()
(这些是我学到的唯一的目录扫描功能),我将使用递归方法来浏览根目录中的所有项目,然后在遇到测试为目录的条目时重新调用自身,通过is_dir($fileName)
.
这就是我遇到问题的地方 - 当我到达一个目录条目时,它正确地将 if 语句导航到目录命令,但是当调用自身时,我似乎无法获取glob()
目录正确,因为每次我调用它时,页面都会停止加载更多内容。我试图从扫描目录的基于相对 URL 的性质中找出我将如何引用它。我设置了一个变量$ROOT_DIR
,这是相对于 php 页面所在目录的根目录(在本例中,$ROOT_DIR="../../"
),然后我会逻辑地思考,我会使用 $ROOT_DIR 调用 scanAllFiles [我的站点地图方法]。 $fileName,这是删除前导后找到的目录的字符串"../../"
从字符串中。尝试了这个之后,还是不行。
我应该使用不同的目录遍历方法来执行此操作,还是我错误地格式化了方法调用?
大多数人只是使用 MySQL 手动制作站点地图。
公开文件并不安全,但您可以添加some安全。
<?php
function files($dir=".") {
$blacklist = array(str_replace("/","",$_SERVER['SCRIPT_NAME']), 'admin.php', 'users.txt', 'secret.txt');
$return = array();
$glob1 = glob($dir."/*");
for($i=0;$i<=count($glob1)-1;$i++) {
$item = $glob1[$i];
$nodir = str_replace($dir, "", $item);
if(is_dir($item)) {
$file1 = explode('/', $item);
$file = $file1[count($file1)-1];
$merge = array_merge($return, files($item));
if(!in_array($file, $blacklist) and !empty($nodir)) $return = $merge;
}
else {
$file1 = explode('/', $item);
$file = $file1[count($file1)-1];
if(!in_array($file, $blacklist) and !empty($nodir)) $return[] = str_replace("./","",$item);
}
}
return $return;
}
// Use like this:
$files = files(); // Get all files from top folder down, no traling slash ...
for($i=0;$i<=count($files)-1;$i++) { // ... Go through them ...
echo "<li>$files[$i]</li>"; // ... And echo the item
}
?>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)