2017-08-28 5 views
1

前のQ &に基づいて、私はファイルシステムフォルダからHTMLでナビゲーションメニューを作成/更新するという私の目標をほぼ達成しました。私はメニューのHTMLを適切にレンダリングすることに固執しています。入れ子になったフォルダのphpスキャン出力から適切なhtmlリストタグに移動する

フォルダ "もの" とその構造:

├── A │   └── a └── B ├── b └── BB ├── bb └── BBB └── bbb

** PHP関数:**

<?php 
function makelist($path) { 
$dir = new RecursiveDirectoryIterator($path,   
RecursiveDirectoryIterator::SKIP_DOTS); 
$files = new RecursiveIteratorIterator($dir, 
RecursiveIteratorIterator::SELF_FIRST); 

foreach ($files as $file) { 
$nameonly=basename($file); 
$indent = str_repeat(' ', $files->getDepth()); 
echo $indent, "<a href=$file>$nameonly<a>\n"; 
} 
} 
makelist('stuff'); 

私は私がここで必要なものに非常に近いと思います。ディレクトリが適切に横断すると、私はなく、かなりのアルファベットとはいえ、ほぼ右のリンクがあります

<a href=stuff/B>B<a> 
    <a href=stuff/B/BB>BB<a> 
    <a href=stuff/B/BB/bb>bb<a> 
    <a href=stuff/B/BB/BBB>BBB<a> 
     <a href=stuff/B/BB/BBB/bbb>bbb<a> 
    <a href=stuff/B/b>b<a> 
<a href=stuff/A>A<a> 
    <a href=stuff/A/a>a<a> 

私の質問私は適切な<ul><li>で返された結果を包むことができる方法を考え出していない

を。私は現在の機能で実現可能ですか?フォルダ構造とそのリンクをhtml形式でレンダリングするより良い方法があれば、それを投げても問題はありません。

PS事前にありがとうございます。私の質問のすべての原子の部分は繰り返しStackOverflowの上で求められているが、私は、分子レベルで立ち往生していると私は検索し、この解決策を見つけるために検索しました。ここで

+0

あなたはrecusrively、あなたの関数を定義してみてください。再帰的なソリューションは、遅くても読みやすく、保守が簡単です。ファンクションの再帰の開始時または終了時に、

    を印刷することができます。 – HumbleWebDev

    答えて

    0

    http://php.net/manual/en/function.scandir.php

    http://php.net/manual/en/function.is-dir.php

    私はこれをテストしていませんが、これは何が必要のJISTです:

    <?php 
    function recursive_menu_structure($directory){ 
        $files = scandir($directory); 
    
        if(count($files) > 0){ 
         echo "<ul>\n"; 
    
         foreach($files as $file){ 
          if(is_dir($file)){ 
           recursive_menu_structure($directory . '/' . $file); 
          } 
          else{ 
           echo "<li><a href='$file'></a></li>\n"; 
          }    
    
         } 
    
         echo "</ul>\n"; 
        } 
    
    
    } 
    ?> 
    
    関連する問題