2014-02-04 2 views
0

После небольшой помощи у меня есть эта рекурсивная функция, которая хорошо выполняет свою работу, однако мне нужна она, чтобы создать ссылку на файлы.Рекурсивное построение ссылки на справочник

В настоящий момент функция может хранить только файл $ 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 [+]
--- вид. PHP
--- all.php
--- search.php

Я хочу, чтобы в основном создать динамическую карту сайта так каждый раз, когда новый реж или файл добавляется он будет включен в карту сайта, это необходимо распечатать родительский каталог и файл содержимого в виде ссылки.

+0

Вы знаете, что PHP уже есть реализованный путь к проходным каталогов? RecursiveDirectoryIterator перебирает вашу файловую систему и предлагает вам методы, помогающие вам создавать ссылки. http://www.php.net/manual/de/class.recursivedirectoryiterator.php – SenseException

+0

Да, я видел это, но хотел практиковать выполнение рекурсивных функций: D получил его в wokr, теперь я пропустил переменную $ dir в строке, тогда просто используемая строка заменить, чтобы привести в порядок src ps can not положить awnser в течение 8 часов LOL –

ответ

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 '&nbsp;&nbsp;Found File or .-dir '.$item.'<br>'; 
    } 
    } 
} 

$path = "/"; 
echo "$path<br>"; 

readDirs($path); 
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("&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 ; 
    } 
} 

?>

Смежные вопросы