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 === '..'

经过一点帮助,我有了这个递归函数,它的工作做得很好,但是我需要它为我创建一个指向文件的链接

目前该函数只能存储$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');
功能站点地图($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("&nbsp;",$i*2) . "<a href='file:///".$abspath ."/' target='_blank'>" .basename($name) . "</a> \n";
          $i++;     
    }
    else {
          echo str_repeat("&nbsp;",$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("&nbsp;",$i*2) . "<a href='file:///".$abspath ."/' target='_blank'>" .basename($name) . "</a> \n";
          $i++;     
    }
    else {
          echo str_repeat("&nbsp;",$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