<?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.
Üstadım emeğiniz ve ilginiz için gerçekten çok teşekkür ederim.
Standardın üzerindeki bu kodları yazabildiğiniz için de tebrik ederim.
&
* 38. satırdaki parse error hatasını çözmeye çalışıyorum... ?
* getID3 kütüphanesini eklemeye çalışıyorum;
getid3.org
github.com/JamesHeinrich/getID3
sourceforge.net/projects/getid3
Tümünün içeriği aynı ve içlerinde dll, exe dosyaları da var alakasını kuramadım, bunlar ne amanla var acaba ?
Hangi php dosyasını include etmeliyiz (içinde birçok php dosyası var) ?
Sizin önerebileceğiniz sade ve tutarlı bir kütüphane linki var mı ?
* Son olarak mp3 ile ilgili kısımları mp4 şeklinde değiştirdiğimizde videolar için de aynı işleyişi ele edebilir miyiz?
if(strtolower($file_info['extension']) == 'mp4') {
$audio_duration = getMp4Duration($file_path); // Süre (sadece mp4 dosyaları için)
// 3) Sayfa yönlendirme kontrolü (örneğin: mp4 dosyasının süresi bittiyse)
if ($audio_duration <= 0) {
header("Location: yeni_sayfa.php");
exit();
Yoksa videolar için farklı bir kod mu yazmalıyız?
Çok teşekkürler...