Klasör fonksiyonu.
Bir projemde kullanmak için yazdığım fonksiyonu sizler ile paylaşayım dedim.
Normalde php ile klasör oluşturmak için mkdir(dizin_adi/); şeklinde mkdir() fonksiyonundan yararlanırız. Fakat bu fonksiyon ile iç içe ard arda klasör açamazsınız yani;
eğer ust adında bir klasör yoksa mkdir('ust/alt/'); diye bir kullanımda ilk önce ust adında klasör ardından alt adında klasör açmaz. hata verir.
Bu fonksiyon ile ard arda ust ve alt dizin oluşturabilirsiniz.
Fonksiyon;
function makedir($dizinler){
$dizinler = explode('/',$dizinler);
$dizin_sayi = count($dizinler);
for($x = 0 ; $x < $dizin_sayi; $x++){
for($i = 0; $i <= $x; $i++){
($i !== 0)? $olustur .= '/'.$dizinler[$i] : $olustur .= $dizinler[$i];
}
if(!is_dir($olustur)) mkdir($olustur);
$olustur ='';
}
return 1;
}
Kullanımı;
makedir('ust/alt/daha-alt');
Bu kullanım sonucunda ust klasörü oluşturulur, ust klasörünün içinde alt klasörü onunda içinde daha-alt klasörü oluşturulmuş olur.
Kolay gelsin...
Php
Paylaşım için Teşekkürler Ali. recursive fonksiyon için güzel bir örnek.
Paylaşım için Teşekkürler Ali. recursive fonksiyon için güzel bir örnek.
Hocam küstahlık olarak algılamayın. Affınıza sığınarak söylüyorum ama sanırım yine dalgınsınız diliniz sürştü :)
iterative fonksiyona güzel bir örnek dicektiniz sanırım
Php
Yok yahu unutkanlıktan değil. Benzer bir işi yapmak için ben recursive ile fonksiyon yazmıştım. fonksiyona bakmadan benim yaptığımın aynısı zannettim. Adım çıktı dokuza inmez sekize.
Recursive olan başka bir "dizin silici" aşağıda, belki birilerinin işine yarar: Klasörün içi dolu olsa dahi herşeyi siler.
{
if(!is_dir($d)){ return;}
$h = @opendir($d);
if($h==0)return 0;
while ($f=readdir($h)){
if ( $f!= ".." && $f!=".")
{
$nd=$d."/".$f;
if(is_dir($nd)){
dizinsil($nd);
}else{
unlink($nd);
}
}
}
closedir($h);
return $sf ;
}