0

1 つのディレクトリ (基本的にはディレクトリ ツリー) の複数のサブディレクトリ内のすべてのファイルを表示する配列を作成しました。ファイルはすべて、クリックするとそのディレクトリ内のファイルを開くリンクです。

私が抱えている問題は、結果をスタイルできるようにしたいということですが、すべてのサブディレクトリとファイル名は同じクラスです (同じコードを使用して生成されるため)。

これが私のphpです:

<?php
function listFolderFiles($dir){
$ffs = scandir($dir);
echo '<ol class="song">';
foreach($ffs as $ff){
    if($ff != '.' && $ff != '..'){
        echo '<li class="title">';
        if(is_dir($dir.'/'.$ff)){
            echo $ff;
            listFolderFiles($dir.'/'.$ff);
        }else{
            echo '<a href="'.$dir.'/'.$ff.'" target="_blank">'.$ff.'</a>';
        }
        echo '</li>';
    }
}
echo '</ol>';
}

listFolderFiles('Current Songs');

?>

そして、生成された html は次のとおりです。

<ol class="song">
<li class="title">
  Sub Directory Folder 1
<ol class="song">
    <li class="title">
    <a href="Current Songs/Song1.mp3"></a></li>
    <li class="title">
    <a href="Current Songs/Song1.pdf"></a></li>
</ol>
</li>
<li class="title">
  Sub Directory Folder 2
<ol class="song">
    <li class="title">
    <a href="Current Songs/Song2.mp3"></a></li>
    <li class="title">
    <a href="Current Songs/Song2.pdf"></a></li>
</ol class="song">
</li>

</ol>
</li>

ご覧のとおり、各エントリは 2 つの順序付けられたリストで構成されていますが、すべてのリスト項目と同様に両方とも同じクラスを持っているため、スタイリングを行うことはほぼ不可能です。

私が欲しいのは、次の html マークアップを生成することです。

<ol class="song">
<li class="title">
  Sub Directory Folder 1
</li> <!--END TITLE HERE-->
<ol>
    <li>
    <a href="Current Songs/Song1.mp3"></a></li>
    <li>
    <a href="Current Songs/Song1.pdf"></a></li>
</ol>
</ol> <!--END SONG OL HERE-->

上記を出力するためにコードにどのようなphp変更を加える必要があるかについて、誰かアドバイスをください。

4

1 に答える 1

1

クラス名をパラメータとして渡すこともできます

function listFolderFiles($dir,$myclass){
$ffs = scandir($dir);
echo '<ol class="song'.$myclass.'">';
foreach($ffs as $ff){
if($ff != '.' && $ff != '..'){
    echo '<li class="title'.$myclass.'">';
    if(is_dir($dir.'/'.$ff)){
        echo $ff;
        listFolderFiles($dir.'/'.$ff);
    }else{
        echo '<a href="'.$dir.'/'.$ff.'" target="_blank">'.$ff.'</a>';
    }
    echo '</li>';
}
}
echo '</ol>';
}
listFolderFiles('Current Songs','_myclass');
listFolderFiles('Current Songs','');
于 2013-04-08T11:58:16.067 に答える