Php 递归目录链接构建
经过一点帮助,我有了这个递归函数,它的工作做得很好,但是我需要它为我创建一个指向文件的链接 目前该函数只能存储$dir/$file.php,我需要它在循环时创建完整路径Php 递归目录链接构建,php,function,recursion,sitemap,dir,Php,Function,Recursion,Sitemap,Dir,经过一点帮助,我有了这个递归函数,它的工作做得很好,但是我需要它为我创建一个指向文件的链接 目前该函数只能存储$dir/$file.php,我需要它在循环时创建完整路径 function siteMap($dir){ $scan = scandir($dir); foreach ($scan as $file) { if ($file === '.' or $file === '..'
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');
功能站点地图($dir){
$scan=scandir($dir);
foreach($scan as$file){
如果($file=='.'或$file=='.'或$file==='.DS_Store')继续;
回声“
”;
if(is_dir($dir./'.$file)){
站点地图($dir.'/'.$file);
}
}
}
网站地图(“应用程序/视图”);
如您所见,这将循环浏览目录中的所有文件夹和文件,并通过链接将其打印到屏幕上。我将尝试包含我的文件结构
<?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 ;
}
}
-根目录(应用程序/视图)--站点[+]
---about.php
---new.php
--产品[+]
---view.php
---all.php
---search.php
我想基本上创建一个动态站点地图,这样每次添加新目录或文件时,它都会包含在站点地图中,这需要打印父目录和内容文件作为链接。您可以根据需要进行一些自定义。看 函数readDirs($path){ $dirHandle=opendir($path); 而($item=readdir($dirHandle)){ $newPath=$path.“/”$item; if(is_dir($newPath)&&&$item!='.&&&$item!='.){ echo“找到文件夹$newPath
”; readDirs($newPath); } 否则{ echo“找到文件或.-dir.$item.”
; } } } $path=“/”; 回显“$path
”; readDirs($path);
PHP有内置的
RecursiveDirectoryIterator
类,用于
这比递归函数快。
下面的代码正在我的Windows系统上运行。只需更改$path
。它将链接您的所有文件并以树状结构列出
<?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 ;
}
}
您知道php已经实现了一种循环目录的方法吗?RecursiveDirectoryIterator在文件系统中循环,并提供方法帮助您创建链接。是的,我看到了,但我想练习制作递归函数:D把它拿到了wokr现在我错过了字符串中的$dir变量,然后用字符串替换来整理src p.s不能将awnser放入8小时lol