Kebanyakan dari kita akan memakai cara ini untuk mendapat daftar berkas pada sebuah direktori, yang mana ini akan menampilkan semua jalur berkas dan folder, namun tidak dengan jalur berkas dan folder yang mempunyai awalan .
, contohnya pada berkas dengan nama .htaccess
:
$files = glob('.\path\to\folder\*');
Untuk mengatasi problem ini, biasanya kita akan menggabungkan dua contoh yaitu .*
untuk menelusuri berkas dan folder dengan awalan .
dan contoh *
untuk menelusuri berkas dan folder generik:
$files = array_unique(array_merge( glob('.\path\to\folder\.*'), glob('.\path\to\folder\*') ));
Kendala kini ada pada jalur .\path\to\folder\.
dan .\path\to\folder\..
yang tolong-menolong tidak kita perlukan, namun muncul juga di dalam daftar. Sehingga kita perlu melaksanakan perjuangan ekstra untuk menyingkirkan item tersebut dari daftar:
$files = array_filter(array_unique(array_merge( glob('.\path\to\folder\.*'), glob('.\path\to\folder\*') )), function($v) { $n = basename($v); return $n !== '.' && $n !== '..'; });
Cara paling sederhana untuk menampilkan semua jalur berkas dan folder, termasuk berkas dan folder yang mempunyai awalan nama .
yaitu menyerupai ini:
$files = glob('.\path\to\folder\{,.}[!.,!..]*', GLOB_BRACE);
Meskipun berkas dengan nama menyerupai ...foo-bar.baz
akan gagal lolos pada contoh penelusuran di atas, namun penamaan berkas dengan awalan .
lebih dari satu tampaknya sangat jarang ada, jadi Saya kira contoh ini cukup aman.
Referensi: Stack Overflow
Sumber https://www.dte.web.id/