0

この投稿に関連するもの: "PHP list all files in directory"、具体的には "Apr 19 2012 at 12:24 " Kiko" によって表示されるコード

ファイル自体へのフォルダーパスを決定する方法を誰かが提案できるかどうか疑問に思っていました:すなわち

$html .= "<li><span class='file'><a href='???' target='_blank'>". $eachDirectory ."</a></span></li>";

SI は、HREF をその周りにラップすることができます。関数は再帰的であるため、どの段階でファイルのパスを特定できるかわかりません。誰にもこれを行う方法がありますか?ありがとう!

4

1 に答える 1

1

参照されているコードを確認し、ニーズに合わせて修正しました。createTree関数のみをこれに置き換えて試してみてください

function createTree($directory,$parent = '')
{
    $html = "<ul>";

    foreach($directory as $keyDirectory => $eachDirectory)
    {
        if(is_array($eachDirectory))
        {
            $html .= "<li class='closed'><span class='folder'>" . $keyDirectory . "</span>";
            $html .= createTree($eachDirectory,$keyDirectory);
            $html .=  "</li>";
        }
        else
        {
            $origin = 'imgs';
            if(trim($parent) !== ''){
                $path = $origin . '/' . $parent . "/" .$eachDirectory;
            }else{
                $path = $origin . '/' . $eachDirectory;
            }
            $html .= "<li><span class='file'><a href='" . $path . "' target='_blank'>". $eachDirectory ."</a></span></li>";

        }
    }
    $html .= "</ul>";

    return $html;
}

$parentという関数の引数リストに新しい引数アイテムを追加したことに気付くでしょう。これは、リンクされるアイテムの親フォルダーのフォルダー名を運ぶために使用されます。次に、フォルダー名が$origin変数に追加されます (これは、getFolderTree関数を使用してトラバースしたフォルダーの名前です。私の場合は「imgs」です。

$parent が空かどうかをチェックする if-else ステートメントがあります。明確にしたい場合は、質問してください。

注 1: 完全なパスを取得するには、$origin の値をルートのフォルダーの名前に置き換える必要があります。

注 2: フォワードスラッシュ (/) をシステムのものに置き換える必要があります。たとえば、*NIX の場合はバックスラッシュであるため、PHP の場合は文字列内で作業するときに二重のバックスラッシュを使用する必要がありますが、Windows を使用している場合、私の編集は元気に働く

于 2013-09-25T17:33:08.143 に答える