Merhaba arkadaşlar bu yazımda sizlere PHP ile Dizin ve Dosya Listeleme konusundan bahsedeceğim. Bu işlemi yapmak için PHP’de iki farklı fonksiyon kullanabiliriz bu fonksiyonlar

  • scandir
  • glob

fonksiyonlarıdır şimdi bu fonksiyonların kullanımlarından bahsetmeden önce sizlere elimde olan dizinleri ve bazı dizinlerin içindeki dosyaları göstermek istiyorum.

Şimdi yukarıda bahsettiğim fonksiyonların belirli farkları var fakat biz şimdi scandir fonksiyonunun nasıl kullanıldığından başlayalım.

scandir()

scandir fonksiyonunun basit bir kullanım şekli vardır

$dosyalar = scandir(‘.’);

eğer fonksiyona parametre olarak tek nokta(.) gönderirsek php dosyamızın bulunduğu ana dizini temsil etmektedir ve bize bir dizi döndürür bu dizini ekrana yazdırmak için de

print_r($dosyalar);

şeklinde kullanmamız gerekiyor şimdi karşımıza çıkan sonuca bakmak gerekirse

şeklinde bir sonuç ile karşılaşırız. Buradaki tek nokta(.), iki nokta(..) önceki dizini ve şu anda bulunduğumuz dizini kastederken .DS_Store ise Mac kullanıcılarında olan bir dosyadır. Aslında scandir ile glob’un farkıda burada şimdi glob fonksiyonunu anlatmaya başlayalım.

glob()

global fonksiyonu dizin içinde detaylı arama yapmamızı sağlayan ve ya aramalarımızı kolayca filtreleyebilmemizi sağlayan bir fonksiyondur. Kullanım şeklinde bahsetmek gerekirse

$dosyalar = glob(“*”);

print_r($dosyalar);

şeklinde ki kodumuzu çalıştırırsak bize dönen diziyi görebiliriz şimdi bu bahsettiğim filtrelemelerden bahsetmek gerekirse

glob(“*”, GLOB_ONLYDIR);

ve ya

glob(“*/”);

şeklinde kodlarımızı çalıştırarak dizinleri listeleyebiliriz. Ayrıca sadece belirli bir uzantıdaki dosyayı filtrelemek istiyorsak

glob(“*.php”);

gibi kullanımlar olabilir buradaki kod sadece php dosyalarının listelenmesini sağlıyor ayrıca bu filtreyi genişde tutabiliriz yani

glob(*.{php,js,css}, GLOB_BRACE);

şeklinde yazdığımız zaman dizindeki tüm php,js ve css dosyalarının listelenmesini sağlayabiliriz. Şimdi her şey güzel ama olan dizinlerin içinde ki dosyaları ve ya dizinleri göremedik bunu nasıl yapacağız derseniz bunun için iki adet fonksiyon yazacağız.

1. Fonksiyon

function _scandir($dizin_adi){

$dosyalar = scandir($dizin_adi);

echo ‘<ul>’;

foreach($dosyalar as $key => $dosya_adi){

if(!in_array($dosyalar, [‘.’,’..’])){

echo ‘<li>’ . $dosya_adi;

if(is_dir($dizin_adi . ‘/’ . $dosya_adi)){

_scandir($dizin_adi . ‘/’ . $dosya_adi);

}

echo ‘</li>’;

}

}

şeklinde bir Recursive (Tekrarlamalı) Fonksiyon olarak yazabiliriz. Burada yaptığımız şey parametre olarak gönderilen dizin adini scandir fonksiyonuna parametre olarak gönderiyoruz daha sonra tek nokta ve çift nokta olan değerlerini dahil etmeden bir listeleme işlemi yapıyoruz ve eğer dizide ki dönen isim bir dizine ait ise o dizini tekrar oluşturduğumuz fonksiyona gönderip çalıştırıyoruz.

2. Fonksiyon

function _glob($dizin_adi){

$dosyalar = glob($dizin_adi);

echo ‘<ul>;

foreach($dosyalar as $key => $dosya_adi){

echo ‘<li>’ . $dosya_adi;

if(is_dir($dosya_adi)){

_glob($dosya_adi . ‘/*’);

}

echo ‘</li>’;

}

echo ‘</ul>’;

}

Bu fonksiyonda hine Recursive (Tekrarlamalı) Fonksiyon olarak yazıldı buradada yaptığımız işlemler şunlar parametre olarak gönderilen dizin adındaki tüm dosya ve dizinlerin isimlerini alıyor eğer dizinse o dizinin yoluna aynı fonksiyonun gitmesini sağlıyoruz.

Özet,

Bu yazımda sizlere PHP ile Dosya ve Dizin listeleme işlemlerinden bahsettim. Bu işlemler için kullanılan iki fonksiyon olan scandir ve glob fonksiyonlarından bahsettim ve bunları kullanarak birer fonksiyon oluşturduk.

Bir sonraki yazım da PHP ile Oturum İşlemleri konusunu anlatacağım. Eğer bu yazımı beğendiyseniz ve diğer yazılarımı merak ediyorsanız buraya tıklayınız.