Создать элементы ul и li для папки и подпапки - PullRequest
1 голос
/ 12 июня 2019

Мне нужно показать каталог и подкаталоги с моего FTP-сервера, чтобы они выглядели так:

https://www.jquery-az.com/jquery/demo.php?ex=77.0_1

Я сделал это с помощью PHP-функции ftp_list_files_recursive:

<code>/* contents - ftp function */
    function ftp_list_files_recursive($ftp_stream, $path){
        $lines = ftp_rawlist($ftp_stream, $path);

        $result = array();

        foreach ($lines as $line){
            $tokens = explode(" ", $line);
            $name = $tokens[count($tokens) - 1];
            $type = $tokens[0][0];
            $filepath = $path . "/" . $name;

            if ($type == 'd'){
                $result = array_merge($result, ftp_list_files_recursive($ftp_stream, $filepath));
            } else {
                $result[] = $filepath;
            }
        }
        return $result;
    }

    /* contents - ftp */
    $contents = ftp_list_files_recursive($conn_id, ".");

    echo '<pre>';
    print_r($contents);
    echo '
';

Используя вышеуказанную функцию, он возвращает мне список папок, подпапок и файлов:

Array
(
    [0] => ./Forze.Vacation.2016-Italy/Hotel01/Forze.Hotel-Italy.mp4
    [1] => ./Forze.Vacation.2016-Italy/Hotel01/Forze.Hotel-Italy.txt
    [2] => ./Forze.Vacation.2016-Italy/Hotel01/DSC0586.png
    [3] => ./Forze.Vacation.2016-Italy/Hotel01/DSC0587.png
    [4] => ./Forze.Vacation.2016-Italy/Hotel01/Rooms/DSC0597.png
    [5] => ./Forze.Vacation.2016-Italy/Hotel01/Rooms/DSC0598.png
    [6] => ./Forze.Vacation.2016-Italy/Hotel01/Rooms/Beths/DSC0600.png
    [7] => ./Forze.Vacation.2016-Italy/Hotel01/Rooms/Beths/DSC0601.png
    [8] => ./Forze.Vacation.2016-Italy/Hotel01/Rooms/Kitchen/DSC0602.png
    [9] => ./Forze.Vacation.2016-Italy/Hotel01/Rooms/Kitchen/DSC0603.png
    [10] => ./Unsorted.Hotel.Room.[Room-123].png
    [11] => ./Unsorted.Hotel.Bathroom.[Bathroom-124].png
)

Так что это должно выглядеть так:

    Forze.Vacation.2016-Italy
       -> Hotel01
             Forze.Hotel-Italy.mp4
             Forze.Hotel-Italy.txt
             DSC0586.png
             DSC0587.png
             -> Rooms
                DSC0597.png
                DSC0598.png
                -> Beths
                   DSC0600.png
                   DSC0601.png
                   -> Kitchen
                      DSC0602.png
                      DSC0603.png
    Unsorted.Hotel.Room.[Room-123].png
    Unsorted.Hotel.Bathroom.[Bathroom-124].png

Iпопробуйте использовать функцию PHP, чтобы проверить, чтобы папка и подпапка генерировали <ul> <li> и </ul> и </ul>

<div id="treeview-checkbox-demo">
                        <ul>
                            <?php
                                $f = -1;
                                $sub = -1;
                                $files = 1;

                                foreach ($result as &$value) {
                                    /* check - subdirectory */
                                    if (strpos($value, 'SUBDIR') !== false) {
                                        $folder = str_replace($folder, '', $value);
                                        $folder = str_replace('SUBDIR.//', '', $folder);
                                        echo '<li>&nbsp;'.$folder;
                                        echo '<ul>';
                                        $sub = 1;
                                        $files++;
                                    }

                                    /* check - folder */
                                    if (strpos($value, 'FOLDER') !== false) {
                                        /* end folder */
                                        if ($f == 0) {
                                            echo '</ul>';
                                            echo '</li>';
                                        }
                                        $folder = explode('./', $value)[1];
                                        echo '<li>&nbsp;'.$folder;
                                        echo '<ul>';
                                        $f = 0;
                                    } else {
                                        if ($sub == 1) {
                                            /* show filename */
                                            $file = explode('./', $value)[$files];
                                            $file = explode('/', $file)[$files+1];
                                            if ($file) {
                                                echo '<li data-value="'.$value.'">&nbsp;'.$file.'</li>';
                                                $f = 0;
                                            }
                                        } else {
                                            /* show filename */
                                            $file = explode('./', $value)[$files];
                                            $file = explode('/', $file)[$files];
                                            echo '<li data-value="'.$value.'">&nbsp;'.$file.'</li>';
                                            $f = 0;
                                        }
                                    }
                                }
                            ?>
                        </ul>
                    </div>

Но она создает папки и несоответствующие подпапки и файлы внутри ... и требуетчтобы иметь такую ​​структуру:

https://www.jquery-az.com/jquery/demo.php?ex=77.0_1

Я создаю административный сайт для администрации отелей, чтобы загружать / выгружать файлы на FTP-сервер, но я застрял с <ul> <li> поколением folders/subfolders/files

...