Re: Recursive Directory Listing
| From: | Jochem Maas | Date: | Thu, 30 Oct 2008 20:02:28 +0000 |
| Subject: | Re: Recursive Directory Listing | ||
| References: | 1 2 3 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-282652@lists.php.net to get a copy of this message | ||
Joe Schaeffer schreef:
> Well, that makes things much easier (and that should teach me to rely
> on a 5-year-old O'Reilly book...)! Thanks for the help!
>
> I'm able to display all the contents of the correct dirs and subdirs,
> but I'm struggling with my implementation. Since I'm trying to nest
> unordered lists, I can't seem to 'catch' sub-directories to nest it
> within their parent <li> tags (and then close the corresponding <ul>
> when necessary. Before I spend time trying to figure out how to chain
> the iterators or mine the returned arrays, is it fair to ask if this
> approach is even possible?
sure, RecursiveIteratorIterator or DirectoryTreeIterator both have
a getDepth() method which might come in useful.
alternatively you could subclass either and define the beginChildren() and
endChildren() methods to output the open/close <UL> tags.
have a hunt around here: http://www.php.net/~helly/php/ext/spl/
>
> Again, thanks for the point in the right direction!
>
>
>
> On Thu, Oct 30, 2008 at 1:30 PM, Jochem Maas <jochem@iamjochem.com> wrote:
>> Joe Schaeffer schreef:
>>> New to PHP development, new to the list; searched the archives but
>>> didn't find an answer (or at least nothing i could successfully
>>> adapt).
>>>
>>> I have a (readable) directory structure like so:
>>>
>>> ../navigation
>>> /cats
>>> /dogs
>>> /beagles
>>> /collies
>>> /some/other/dirs/
>>> /horses
>>>
>>> I need to display those directories in nested html lists (marked up
>>> with css). Using PHP on the above, I'd like to produce the following
>>> HTML:
>>>
>>> <ul>
>>> <li>cats</li>
>>> <li>dogs
>>> <ul>
>>> <li><beagles></li>
>>> <li><collies>
>>> <ul><li>some...</li></ul>
>>> </li>
>>> </ul>
>>> </li>
>>> <li>horses</li>
>>> </ul>
>>>
>>> I'm able to display one level deep (cats, dogs, horses), but not nest
>>> the lists accordingly. Since this is for a navigation structure,
>>> obviously I'll have anchors in the <li></li> lines. They'll be
>>> formatted like so
>>> href="index.php?section=dogs&chapter=collies&verse=some .
>>>
>>> Some details about my environment:
>>> 1) no files will be in the /navigation (or sub) dirs, but i'd
>>> (ideally) like to define a depth, to prevent >3-4 levels of
>>> navigation.
>>> 2) I can successfully exclude dirs (. and .. and anything else I define)
>>> 3) the actual PHP script probably won't be in the /navigation
>>> directory, so I'll need a defined starting path (ie, $root =
>>> /site/docs/includes/navigation/ or somesuch...).
>>> 4) no database access (otherwise this whole contraption wouldn't be an issue...)
>>>
>>> Any help is greatly appreciated, thank you in advance.
>> RecurisiveDirectoryIterator and FilterIterator classes from SPL is something that will get
>> you home.
>> the archives and the intertubes offer examples (etc) on how to use these.
>>
>>> --joe
>>>
>>
>