PHP Klasör Listeleme Fonksiyonları

PHP Klasör Listeleme Fonksiyonları

opendir fonksiyonu

Opendir fonksiyonu, içerisine girilen parametreler doğrultusunda klasörü açar ve dizini temsil eden, işaret eden değeri bir değişkene atar. Klasörü belirten bu değişken üzerinden readdir fonksiyonu ile dizin içerisindeki dosyaları ve alt dizinleri listeleyebileceğiz. Opendir Fonksiyonu kullanımı aşağıdaki gibidir.

$klasor = opendir('dosyalar');

readdir fonksiyonu

Readdir fonksiyonu, opendir fonksiyonu ile oluşturulan klasör referansını parametre olarak alarak, o klasörün içerisindeki dosya ve alt dizinleri listeleme işlemini gerçekleştirir. Fonksiyon çalıştığında belirtilen klasörde ilk dosyayı getirir ve bir sonraki dosyayı işaretler. Böylelikle fonksiyon döngü içerisinde kullanıldığında klasör içerisindeki bütün dosyalar taranır ve uygulama içerisinde dizindeki bütün dosyalar getirilir. İşaretlenecek dosya kalmadıysa fonksiyon artık dosya getiremez ve false değeri döner. Readdir fonksiyonu kullanımı aşağıdaki gibidir.

$klasor = opendir('dosyalar'); //klasörü aç
while($dosya = readdir($klasor)){ //klasördeki dosyalar taranıyor
	if (!is_dir($dosya)){ //dosya değişkenindeki değer klasör değilse
		echo $dosya.'<br>'; //alt alta yazdır
	}
}

Yukarıdaki örnekte dosyalar isimli klasördeki bütün dosyalar taranıyor ve klasör olmayan, sadece dosya olan veriler ekrana yazdırılıyor. İşlem bittiğinde closedir fonksiyonu ile klasör kapatma işlemi gerçekleştiriliyor.

glob fonksiyonu

Glob fonksiyonu da PHP klasör listeleme işlemi yapan fonksiyonlardan biridir. Parametre olarak girilen klasör içerisindeki bütün dosyaları ve klasörleri dizi olarak döndürür. Glob fonksiyonu ile klasör içerisinde listelenecek dosya ve klasörler arasında filtreleme yapılabilir, istenilen uzantılı dosyaların getirilmesi sağlanabilir. Glob fonksiyonu kullanımı aşağıdaki gibidir.

$klasor = glob('dosyalar/*'); 
print_r($klasor);
/*
	--çıktı--
	Array ( 
		[0] => dosyalar/metin.txt 
		[1] => dosyalar/resimler 
		[2] => dosyalar/site.php 
	)
*/

Yukarıdaki örnekte klasör yolundan sonra * işareti girilmesi ile dizin içerisindeki bütün dosya ve klasörlerin listelenmesi isteği bildirilir. Aşağıdaki örnekte ise sadece belirtilen uzantılı dosyaların getirilmesi sağlanıyor.

$klasor = glob('dosyalar/*.txt'); 
print_r($klasor);
/*
	--çıktı--
	Array ( 
		[0] => dosyalar/metin.txt 
	)
*/

Scandir fonksiyonu

PHP klasör listeleme fonksiyonlarından biri de scandir fonksiyonudur. 2 parametre ile kullanılır. İlk parametre listelenecek klasör yolu, ikinci parametre ise listelenecek dosyaların sıralanma biçiminin belirlendiği değer. İkinci parametreyi kullanmak zorunlu değildir. Fonksiyon başarılı bir şekilde klasörü tarar ise dizin içerisindeki bütün dosyaları ve klasörleri dizi halinde geri döndürür, aksi takdirde false değeri döner.

İkinci parametrede kullanılabilecek değerler

SCANDIR_SORT_ASCENDING – Default olarak tanımlanmıştır. Dizi içerisinde taranan ve getirilen dosya ve klasör isimleri alfabetik olarak a’dan z’ye kadar düz sıralanır.

SCANDIR_SORT_DESCENDING – Dizi içerisinde taranan ve getirilen dosya ve klasör isimleri alfabetik olarak z’den a’ya kadar ters sıralanır.

SCANDIR_SORT_NONE – Veriler sıralanmadan getirilir.

Scandir fonksiyonu kullanımı aşağıdaki gibidir.

$klasor = scandir('dosyalar/'); 
print_r($klasor);
/*
	--çıktı--
	Array ( 
		[0] => . 
		[1] => .. 
		[2] => metin.txt 
		[3] => resimler 
		[4] => site.php 
	)
*/

Yukarıdaki örnekte, scandir fonksiyonu ile belirtilen dizin içerisindeki klasör ve dosya değerleri döndürülüyor. Aşağıdaki kodlarda ise döngü içerisinde . ve .. gibi değerler if koşulu ile filtrelenerek diğer veriler ekrana yazdırılıyor.

foreach($klasor as $dosya){
	if ($dosya != '.' && $dosya != '..'){
		echo $dosya.'<br>';
	}
}
/*
	--çıktı--
	metin.txt
	resimler
	site.php
*/