<?php
$dir = "folder_name";
$files = [];
function listFiles($dir) {
global $files;
if ($handle = opendir($dir)) {
while (false !== ($file_name = readdir($handle))) {
$file_path = $dir . '/' . $file_name;
// 1) Alt klasörlereki dosyaları da diziye ekleme
if ($file_name != "." && $file_name != "..") {
if (is_dir($file_path)) {
listFiles($file_path);
} else {
// 3) Sadece resim uzantısına sahip dosyaları diziye ekleme
$allowed_extensions = ['jpg', 'jpeg', 'png', 'gif', 'mp3'];
$file_info = pathinfo($file_path);
// 2) Sadece belirli uzantılara sahip dosyaları diziye ekleme
if (in_array(strtolower($file_info['extension']), $allowed_extensions)) {
// 4) Dosyaların boyut ve süre bilgilerini almak
$file_size = filesize($file_path); // Boyut
if(strtolower($file_info['extension']) == 'mp3') {
$audio_duration = getMp3Duration($file_path); // Süre (sadece mp3 dosyaları için)
// 3) Sayfa yönlendirme kontrolü (örneğin: mp3 dosyasının süresi bittiyse)
if ($audio_duration <= 0) {
header("Location: yeni_sayfa.php");
exit();
}
}
$files[] = [
'path' => $file_path,
'size' => $file_size,
'duration' => $audio_duration ?? null,
];
}
}
}
}
closedir($handle);
}
}
// UTF-8 karakter desteği
setlocale(LC_ALL, 'tr_TR.UTF-8');
bind_textdomain_codeset('messages', 'UTF-8');
listFiles($dir);
// 5) "abc" adlı klasör ve içindeki dosyaları hariç tutma
$files = array_filter($files, function ($file) {
return stripos($file['path'], '/abc/') === false;
});
// 6) Belirli karakterlere sahip dosyaları hariç tutma
$exclude_characters = ['ç', 'w', '3'];
$files = array_filter($files, function ($file) use ($exclude_characters) {
foreach ($exclude_characters as $char) {
if (stripos($file['path'], $char) !== false) {
return false;
}
}
return true;
});
// +) $allowed_extensions = ['*']; Bu kod çalışmadı, çalışan halini yazma
if (in_array('*', $allowed_extensions)) {
// Tüm uzantılara izin verildiyse, bu adımı atla
} else {
// Sadece belirli uzantılara izin verildiyse, filtrele
$files = array_filter($files, function ($file) use ($allowed_extensions) {
$file_info = pathinfo($file['path']);
return in_array(strtolower($file_info['extension']), $allowed_extensions);
});
}
// Dosyaları kontrol et ve array dizisine atama
if (!empty($files)) {
// Rastgele bir dosyayı seç
$random_file = $files[array_rand($files)];
// Seçilen dosyayı ekrana yazdır
echo "file: " . $random_file['path'];
} else {
echo "Klasörde uygun dosya bulunamadı.";
}
// 4) Dosyanın süresini almak için kullanılan fonksiyon
function getMp3Duration($file_path) {
$getID3 = new getID3;
$file_info = $getID3->analyze($file_path);
return (int)$file_info['playtime_seconds'];
}
?>
Dosyanın süresini almak için
getID3
kütüphanesinin yüklü olması gerektiğini unutmayın.