Nabend,
ich habe eine Funktion gebaut die automatisch Dateien aus einem Ordner ausliest und diese entweder als Liste oder als Liste mit Links ausgibt.
Die Funktion hat folgende Parameter:
Pfad:
Pfad angeben, '.' spricht das gleiche Verzeichnis an, mit ../ ein Verzeichnis zurück.
Dateinamen:
Endungen die ausgelesen werden sollen, nur Dateien mit den angegebenen Endungen werden verarbeitet. Durch Komma trennen.
Attribute:
Durch Komma getrennt sämtliche Attribute die Links / Listenelemente besitzen sollen, zuerst gibt man die Attribute für die Listenelemente mit, dann durch Komma getrennt die Attribute für die Links. Gibt man nur die Liste aus, aber trotzdem Attribute für die Links mit werden diese ignoriert.
Ausnahmen:
Kompletter Dateiname inklusive Endung um die Datei nicht mit einzubeziehen, durch Komma trennen.
Mode:
Ist dieser letzte Parameter auf true gesetzt wird das ganze als Liste mit Links ausgegeben, wenn nicht dann nur als Liste : )
<span class="syntaxdefault"><br /> genDataList</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">PFAD</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> ENDUNGEN</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> KLASSENNAMEN</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> AUSNAHMEN</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> MENU</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault"> </span>
Als Beispiel:
<span class="syntaxdefault"><br /> genDataList</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'inhalt/'</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">'html,htm,php'</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">'class="menuListenElement",target="_blank" class="menuLink"'</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">'guestBookScript.php, anmerkungen.htm'</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> true</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault"> </span>
Aus dem Ordner Inhalt werden alle .html, .htm und .php Dateien ausgelesen, die Listenelemente bekommen die Attribute class="menuListenElement", die Links bekommen die Attribute target="_blank" class="menuLink". Die Dateien guestBookScript.php und anmerkungen.htm werden nicht ausgelesen da sie evtl. wichtige, nicht für den Benutzer gedachte Daten enthalten.
Hier der Code:
<span class="syntaxhtml"><br /><span class="syntaxdefault"><?php<br /><br /> </span><span class="syntaxkeyword">function </span><span class="syntaxdefault">genDataList</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$dir</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$dataTypes</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$attributes </span><span class="syntaxkeyword">= </span><span class="syntaxstring">''</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$exception </span><span class="syntaxkeyword">= </span><span class="syntaxstring">''</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$menu </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">false</span><span class="syntaxkeyword">)<br /> {<br /><br /> if(!</span><span class="syntaxdefault">$dir</span><span class="syntaxkeyword">) return </span><span class="syntaxdefault">false</span><span class="syntaxkeyword">;<br /><br /> </span><span class="syntaxdefault">$types </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">explode</span><span class="syntaxkeyword">(</span><span class="syntaxstring">','</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$dataTypes</span><span class="syntaxkeyword">);<br /> foreach(</span><span class="syntaxdefault">$types </span><span class="syntaxkeyword">as &</span><span class="syntaxdefault">$type</span><span class="syntaxkeyword">)<br /> {<br /> if(</span><span class="syntaxdefault">$type</span><span class="syntaxkeyword">)<br /> {<br /> </span><span class="syntaxdefault">$type </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">trim</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$type</span><span class="syntaxkeyword">);<br /> }<br /> }<br /><br /> </span><span class="syntaxdefault">$exception </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">explode</span><span class="syntaxkeyword">(</span><span class="syntaxstring">','</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$exception</span><span class="syntaxkeyword">);<br /><br /> foreach(</span><span class="syntaxdefault">$exception </span><span class="syntaxkeyword">as &</span><span class="syntaxdefault">$ex</span><span class="syntaxkeyword">)<br /> {<br /> if(</span><span class="syntaxdefault">$ex</span><span class="syntaxkeyword">)<br /> {<br /> </span><span class="syntaxdefault">$ex </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">trim</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$ex</span><span class="syntaxkeyword">);<br /> }<br /><br /> }<br /><br /> </span><span class="syntaxdefault">$h </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">opendir</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$dir</span><span class="syntaxkeyword">);<br /> if(!</span><span class="syntaxdefault">$h</span><span class="syntaxkeyword">) return </span><span class="syntaxdefault">false</span><span class="syntaxkeyword">;<br /><br /> if(</span><span class="syntaxdefault">$dir </span><span class="syntaxkeyword">== </span><span class="syntaxstring">'.'</span><span class="syntaxkeyword">)<br /> {<br /> unset(</span><span class="syntaxdefault">$dir</span><span class="syntaxkeyword">);<br /> }<br /><br /> while (</span><span class="syntaxdefault">false </span><span class="syntaxkeyword">!== (</span><span class="syntaxdefault">$f </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">readdir</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$h</span><span class="syntaxkeyword">)))<br /> {<br /> </span><span class="syntaxdefault">$d </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">explode</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'.'</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$f</span><span class="syntaxkeyword">);<br /><br /> if(</span><span class="syntaxdefault">in_array</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$d</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">count</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$d</span><span class="syntaxkeyword">)-</span><span class="syntaxdefault">1</span><span class="syntaxkeyword">], </span><span class="syntaxdefault">$types</span><span class="syntaxkeyword">) AND !</span><span class="syntaxdefault">in_array</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$f</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$exception</span><span class="syntaxkeyword">))<br /> {<br /> </span><span class="syntaxdefault">$data</span><span class="syntaxkeyword">[] = </span><span class="syntaxdefault">$f</span><span class="syntaxkeyword">;<br /> }<br /> }<br /><br /> if(!</span><span class="syntaxdefault">$data</span><span class="syntaxkeyword">)<br /> {<br /> return </span><span class="syntaxdefault">false</span><span class="syntaxkeyword">;<br /> }<br /><br /> </span><span class="syntaxdefault">$return </span><span class="syntaxkeyword">= </span><span class="syntaxstring">''</span><span class="syntaxkeyword">;<br /><br /> switch(</span><span class="syntaxdefault">$menu</span><span class="syntaxkeyword">)<br /> {<br /> case </span><span class="syntaxdefault">false</span><span class="syntaxkeyword">:<br /> </span><span class="syntaxdefault">$attributes </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">explode</span><span class="syntaxkeyword">(</span><span class="syntaxstring">','</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$attributes</span><span class="syntaxkeyword">);<br /> foreach(</span><span class="syntaxdefault">$data </span><span class="syntaxkeyword">as &</span><span class="syntaxdefault">$dat</span><span class="syntaxkeyword">)<br /> </span><span class="syntaxdefault">$return </span><span class="syntaxkeyword">.= </span><span class="syntaxstring">'<li '</span><span class="syntaxkeyword">. </span><span class="syntaxdefault">trim</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$attributes</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">]) .</span><span class="syntaxstring">'>'</span><span class="syntaxkeyword">. </span><span class="syntaxdefault">$dat </span><span class="syntaxkeyword">.</span><span class="syntaxstring">'</li>'</span><span class="syntaxkeyword">;<br /> break;<br /><br /> case </span><span class="syntaxdefault">true</span><span class="syntaxkeyword">:<br /> </span><span class="syntaxdefault">$attributes </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">explode</span><span class="syntaxkeyword">(</span><span class="syntaxstring">','</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$attributes</span><span class="syntaxkeyword">);<br /> foreach(</span><span class="syntaxdefault">$data </span><span class="syntaxkeyword">as &</span><span class="syntaxdefault">$dat</span><span class="syntaxkeyword">)<br /> {<br /> </span><span class="syntaxdefault">$d </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">explode</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'.'</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$dat</span><span class="syntaxkeyword">);<br /> </span><span class="syntaxdefault">$return </span><span class="syntaxkeyword">.= </span><span class="syntaxstring">'<li '</span><span class="syntaxkeyword">. </span><span class="syntaxdefault">trim</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$attributes</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">]) .</span><span class="syntaxstring">'><a href="'</span><span class="syntaxkeyword">. </span><span class="syntaxdefault">$dir </span><span class="syntaxkeyword">. </span><span class="syntaxdefault">$dat </span><span class="syntaxkeyword">.</span><span class="syntaxstring">'" '</span><span class="syntaxkeyword">. </span><span class="syntaxdefault">trim</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$attributes</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">1</span><span class="syntaxkeyword">]) .</span><span class="syntaxstring">'>'</span><span class="syntaxkeyword">. </span><span class="syntaxdefault">ucfirst</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$d</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">]) .</span><span class="syntaxstring">'</a></li>'</span><span class="syntaxkeyword">;<br /> }<br /> break;<br /> }<br /><br /> return </span><span class="syntaxdefault">$return</span><span class="syntaxkeyword">;<br /><br /> }<br /><br /></span><span class="syntaxdefault">?><br /></span></span>
(Habe den PHP Code mal etwas vereinfacht für euch)