login  Naam:   Wachtwoord: 
Registreer je!
Scripts > PHP > Snippets > Directory uitlezen


Reacties op het script Directory uitlezen

Offline  numlockrond
Gepost op: 07 november 2004 - 17:58
Onbekend



kun je ipv die for-lus niet gewoon in_array() gebruiken om te kijken of de extensie is toegestaan? lijkt me wat sneller... (iig minder code)

door de bestandsnaam te exploden op een punt en dan het 2e element van de array te nemen heb je niet altijd de extensie, bijv. als een bestand mooi.plaatje.jpg heet. Je kunt dan beter dit gebruiken:

  1. $ext = strtolower(strrchr($bestandsnaam, "."));

Offline  twopeak
Gepost op: 07 november 2004 - 18:13
Gouden medaille

PHP ver gevorderde




yep, ik verbeter het nu:!:

Offline  Thomas
Gepost op: 08 november 2004 - 20:36
Moderator



bij uitlezen()
Het array $bestanden suggereert dat je een lijst van bestanden retourneert, maar deze functie retourneert ook folders. Als het je bedoeling is om alleen bestanden te retourneren voer je een controle uit, bijvoorbeeld:

  1. <?php
  2. if(is_file($dit_bestand)) {
  3. $bestanden[] = $dit_bestand;
  4. }
  5. ?>


bij directory()
Je kan je functiedeclaratie ook als volgt doen ($filters meteen als array meegeven):

  1. <?php
  2. function($dir, $filters=array()) {
  3. ...
  4. }
  5. ?>


Als je dan geen tweede parameter opgeeft (dus geen filters instelt), lees je alle bestanden uit, en anders controleer je de items in $filters met behulp van in_array.
Hier moet je nog steeds kijken of je te maken hebt met een file (wederom, als dit de bedoeling is).

Ook hoeft het tweede deel van $bestandarray ($bestandsarray[1] - woops, foutje ? bestandarray <--> bestandsarray) niet je extensie te zijn (class.page.php ?).
Gebruik dus bijvoorbeeld array_pop() in combinatie van explode().

Een iets elegantere implementatie van directory() wordt dus bijvoorbeeld:

  1. <?php
  2. function directory($dir, $filters=array()) {
  3. $bestanden = array();
  4.  
  5. $uitlees = opendir($dir);
  6. while(($dit_bestand = readdir($uitlees)) !== false) {
  7. $extensie = array_pop(explode(".", $dit_bestand));
  8. if((in_array($extensie, $filters) || !sizeof($filters)) && is_file($dir.$dit_bestand)) {
  9. $bestanden[] = $dit_bestand;
  10. }
  11. }
  12. closedir($uitlees);
  13. return $bestanden;
  14. }
  15. ?>


Een aanroep wordt dan bijvoorbeeld:
directory("test/", array("htm", "js", "php"));
of
directory("test/");
voor alle type bestanden

En spring eens in, verdorie!

Offline  twopeak
Gepost op: 09 november 2004 - 00:20
Gouden medaille

PHP ver gevorderde





Na rijp beraad heeft de bestuursraad besloten om rekening te houden met uw commentaar.
Wij hebben onze collega-programeurs deze meldingen doorgegeven en zij hebben de veranderingen doorgevoerd.

Dit resulteerde in een verandering van de code.

en die inspringing was ergens verloren gelopen... net zoals di 's' in de var. ik had het script bij mij getest... hmmm, raar anyway...

Offline  delta_004
Gepost op: 05 februari 2005 - 13:28
Onbekend



Wha noem je dit een snippet

Offline  twopeak
Gepost op: 06 februari 2005 - 00:01
Gouden medaille

PHP ver gevorderde




Wat anders?
Citaat:
[I][B]delta_004[/B] schreef op 05 Februari 2005 - 13:28[/I]

Wha noem je dit een snippet

Offline  thomasho
Gepost op: 27 maart 2005 - 20:42
Nieuw lid



Kan je dit script ook maken voor remote directories?

(vb map met foto's staat op gratis webruimte om traffiek te besparen en deze foto's zouden in een array ingelezen moeten worden...)

Weet iemand raad?
Alvast bedankt!

Offline  twopeak
Gepost op: 28 maart 2005 - 01:10
Gouden medaille

PHP ver gevorderde




Dit script kan niet voor remote sites.
Wel zou je een nieuw script kunnen maken, dat afhangt van hoe je directory listing eruitziet.
Als je php hebt, kan je een lijst maken die je gemakkelijk kunt inlezen met php.
Als je geen php hebt, maar wel een lijst met alle documenten in die map, dan zou je een script moeten kunnen maken dat php kan inlezen.

Ik waarschuw je wel dat er AFAIK geen enkel freehost zoiets toelaat, en je account zal vrij snel afgesloten worden.
Je kunt dus beter ginder nog een site hebben die wat traffic aanroept!!!

Offline  remy
Gepost op: 06 mei 2005 - 00:15
PHP ver gevorderde



:D superscript, maar heb 1 vraagje, hoe lees je de array buiten de funtie uit?


Enkel aanvullende informatie, vragen en antwoorden op vragen zijn welkom.
 
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.069s