Re: automaticky include()

From: Paco (paco@seznam.cz)
Date: 20. 08. 2002, 23:17 CEST


> rad bych mel na strance vypsane nejake soubory (napriklad 4) z urciteho
> adresare. Soubory by se skladaly z cislic, pricemz nejvetsi cislo by byl
> nejnovejsi soubor.

Chtel jsi rict, ze z cislic by se skladala JMENA souboru, ze ano? :)

> Normalne bych to asi resil pres include() nebo reguire(), ale nechce se mi
> pri kazdym pridanem souboru zmenit nejaky soubor:) Tomas Martinek

Pouziti includes nic nebrani, pokud si predem jednoduse nactes
z toho prislusneho adresare pathnames souboru, ktere odpovidaji
prave tem tvym pozadavkum, setridis je a ponechas prvnich n, podle
prani. Tyhle pathnames pak muzes pouzit v includes, na kterych uz
tak nebude potreba dale nic menit - prislusne pathnames souboru pro
includes se proste vzdy samy zaktualizuji podle stavu v adresari.

Takze pro zjednoduseni predpokladam, ze JENOM z cislic plus nejaka ta
extenze, budou STEJNE dlouhe (pripadne tedy doplneny zleva nulami)
a poradi (priorita souboru) se tedy bude urcovat lexikograficky a to
sestupne protoze pises: 'pricemz nejvetsi cislo by byl nejnovejsi soubor.'
Tedy treba 87654321.php, 00012345.php, 00000077.php ... (jinak samozrejme
mozno upravit dle vkusu a potreb, treba i pro numericke trideni):

###############
#fce vrati pole s prvnimi $nr soubory s 'nejvyssim' numerickym jmenem
#a extenzi $ext z adresare $filedir ve tvaru <relativepath>/<name>.<ext>
#
function getfiles($filedir,$ext,$nr){
   $exc=strlen($ext);
   $dh=opendir($filedir);
   while($file=readdir($dh)){
      if(($file==".")or($file=="..")or(strtolower(strrchr($file,'.'))!=$ext)) continue;
      if(!is_numeric(substr($file,0,-$exc))) continue;
      $farr[]="$filedir/$file";
   }
   closedir($dh);
   rsort($farr);
   array_splice($farr,$nr);
return $farr;
}
#
$filedir='./soubory'; //adresar - bez koncoveho lomitka!
$ext='.php'; //extenze - s teckou a MALYMI bez ohledu na skut. velikost
$nr=4; //prvnich n souboru dle 'velikosti' jmena
$files=getfiles($filedir,$ext,$nr);
#no a ted budto includes rovnou po sobe cyklem:

for($i=0;$i<$nr;$i++){
	include($files[$i])
}

#nebo extra poruznu roztrousit - to uz zalezi na tom, k cemu a jak
#chces ty includes pouzit

include($files[0]);
......
include($files[n]);
###############

pako Paco. 


______________________________________________________________________
Reklama:
E-mail zdarma na cely zivot: http://email.seznam.cz



This archive was generated by hypermail 2.1.2 : 20. 08. 2002, 23:18 CEST