Vraag & Antwoord

Webprogrammeren & scripting

[PHP] Goede nested <UL>'s parsen

2 antwoorden
  • Ik heb een functie geschreven die een directory uitleest en alles als één lange string teruggeeft, inclusief HTML tags om er een unordered list van te maken. (Bewust geen array, omdat ik dan nog een tweede functie moet schrijven om deze array weer om te zetten naar HTML, dus nu gebeurt het allemaal in één keer) Ik wil rekening houden met eventuele subdirectories dus ik heb hem recursief gemaakt. Nu werkt hij prima, maar er is één probleem: In het geval van de aanwezigheid van subdirectories parsed het invalid HTML. Deze ziet er namelijk als volgt uit: [code:1:a4bf625c7a] <ul> <li>Filenaam</li> <li>Filenaam</li> <ul> <li>Filenaam</li> <li>Filenaam</li> </ul> </ul> [/code:1:a4bf625c7a] En dat is uiteraard niet goed, want dat moet zijn: [code:1:a4bf625c7a] <ul> <li>Filenaam</li> <li>Filenaam</li> <li><ul> <li>Filenaam</li> <li>Filenaam</li> </ul> </li> </ul> [/code:1:a4bf625c7a] En ik pieker me suf hoe ik dat moet herstellen, maar ik kom er niet echt uit. Dus ik vraag me af of er iemand anders een idee over heeft :-) De functie: [code:1:a4bf625c7a] function readfiles($dirpath) { if ($fileDirectory = opendir($dirpath)) // Open directory { $dir2html = <ul>."\n"; while($entryName = readdir($fileDirectory)) { // read each entry if(is_dir($dirpath.'/'.$entryName) && substr("$entryName", 0, 1) != ".") // Is this a directory? { $dir2html .= readfiles($dirpath.$entryName); // Yes it is! Call the function recusively and store dir content in a new array } elseif (substr("$entryName", 0, 1) != ".") // No directory, but is this a hidden file? { $dir2html .= <li>.$entryName.</li>."\n"; // A regular file and not hidden. So let's store it! } } $dir2html .= </ul>."\n"; // Done! Add the closing tag closedir($fileDirectory); // close directory } else { $dir2html = false; // The directory could not be opened } return $dir2html; } [/code:1:a4bf625c7a]
  • Kan je niet altijd '<li>' en '</li>' toevoegen aan $dir2html en dit dan niet meer doen als het een gewoon bestand is?

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.