Takéto funkcie nie su priamo súčasťou PHP knižníc, preto som sa rozhodol ich naprogramovať a zverejniť. Funkcie som ladil vo verzii PHP 5.2.5.
Predpokladám u programátora základné znalosti PHP.
Funkcia Search_directory prehľadá adresár $dir (napr.: d:\mojedata\) a uloží do premennej $files obsah všetkých nájdených súborov.
function Search_directory($dir, &$files) { clearstatcache(); if (is_dir($dir)) { if ($openDir = opendir($dir)) { while (false !== ($file = readdir($openDir))) { if (!in_array($file, array('.','..'))) { $f = strtolower($dir.$file); if (is_dir($f)) { $f = $f.'\\\\'; $files[] = $f; Search_directory($f, $files); } else $files[] = $f; } } closedir($openDir); } } }
Funkcia Remove_directory vymaže celý adresár $dir aj so súbormi.
function Remove_directory($dir) { clearstatcache(); if(is_dir($dir)) { $dir = substr($dir, -1) != "/" ? $dir."/" : $dir; $openDir = opendir($dir); while (false !== ($file = readdir($openDir))) { if (!in_array($file, array('.','..'))) { if (is_dir($dir.$file)) Remove_directory($dir.$file); else @unlink($dir.$file); } } closedir($openDir); @rmdir($dir); return true; } else return false; }
Funkcia Copy_directory prekopíruje celý adresár $source aj so súbormi do adresára $destination.
function Copy_directory($source, $destination) { clearstatcache(); if (is_dir($source)) { @mkdir($destination); $directory = dir($source); while (false !== ($readdirectory = $directory->read())) { if ($readdirectory != '.' && $readdirectory != '..') { $pathdir = $source.'/'.$readdirectory; if (is_dir($pathdir)) Copy_directory($pathdir, $destination.'/'.$readdirectory); else copy($pathdir, $destination.'/'.$readdirectory); } } $directory->close(); } else copy($source, $destination); }
V prípade OS Linux (/) versus Windows (\) treba zmeniť lomítko v adresároch podľa potreby. Ako ste si iste všimli, využívam vo všetkých funkciách tzv. rekurzívne volanie tej iste funkcie v tele. V tomto prípade je táto metóda obzvlášť vhodná, kedže potrebujeme prehľadávať v tzv. stromových štruktúrach adresáre a súbory.
s pozdravom.