经过一些帮助后,我有了这个递归功能,可以很好地完成它,但是我需要它来创建一个文件链接。
目前该函数只能存储$ dir / $ file.php,我需要它来循环创建完整路径。
function siteMap($dir){
$scan = scandir($dir);
foreach ($scan as $file) {
if ($file === '.' or $file === '..' or $file === '.DS_Store') continue;
echo '<a href="../' . $file . '">' . $file . '</a><br>';
if (is_dir($dir . '/' . $file)) {
siteMap($dir . '/' . $file);
}
}
}
siteMap('application/view');
如您所见,这将遍历目录中的所有文件夹和文件,并通过链接将其打印到屏幕上。我将尝试包含我的文件结构。
-root(应用/视图)
--site [+]
--- about.php
--- new.php
--product [+]
--- view.php
--- all.php
---的search.php
我想基本上创建一个动态站点地图,所以每次添加它的新目录或文件都会包含在站点地图中时,这需要打印父目录和内容文件作为链接。
答案 0 :(得分:0)
您可以根据需要进行自定义。看看https://stackoverflow.com/questions/22986093/cannot-loop-through-directories/22986256#22986256
function readDirs($path){
$dirHandle = opendir($path);
while($item = readdir($dirHandle)) {
$newPath = $path."/".$item;
if(is_dir($newPath) && $item != '.' && $item != '..') {
echo "Found Folder $newPath<br>";
readDirs($newPath);
}
else{
echo ' Found File or .-dir '.$item.'<br>';
}
}
}
$path = "/";
echo "$path<br>";
readDirs($path);
答案 1 :(得分:0)
PHP内置RecursiveDirectoryIterator
类,用于for iterating recursively over filesystem directories.
这比递归函数快。
下面的代码正在我的Windows系统上运行。只需更改$path
即可。它将链接您的所有文件并列为TREE结构。
<?php
$path = realpath('\\\\local\\tech\\projects\\');
echo "<pre>";
$objects = new RecursiveIteratorIterator($RDI = new RecursiveDirectoryIterator($path), RecursiveIteratorIterator::SELF_FIRST);
$i=0;
foreach($objects as $name => $object){
$abspath = str_replace('\\','/',strtolower($name)) ;
if($object->isDir()) {
echo str_repeat(" ",$i*2) . "<a href='file:///".$abspath ."/' target='_blank'>" .basename($name) . "</a> \n";
$i++;
}
else {
echo str_repeat(" ",$i*2) . "<a href='file:///".$abspath ."' target='_blank'>" .basename($name) . "</a> \n";
}
if($RDI->hasChildren() == false ) {
$i = 0 ;
}
}
&GT;