この記事では、phpでフォルダーからファイルをランダムに読み取る方法について説明します。皆さんの参考に共有してください。具体的な実装方法は以下の通りです
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
関数 RandomFile($folder='', $extensions='.*'){ //パスを修正: $folder = トリム($folder); $folder = ($folder == '') './' : $folder; //フォルダーをチェック: if (!is_dir($folder)){ die('指定されたフォルダーが無効です!' } //ファイル配列を作成する $files = array(); //ディレクトリを開く if ($dir = @opendir($folder)){ // すべてのファイルを調べます: while($file = readdir($dir)){ if (!preg_match('/^.+$/', $file) と preg_match('/.('.$extensions.')$/', $file)){ // 配列にフィードします: $files[] = $file; } } // ディレクトリを閉じる closedir($dir); } その他 { die('フォルダー「'.$folder.'」を開けませんでした。'); } if (count($files) == 0){ die('ファイルが見つかりません:-('); } // シードランダム関数: mt_srand((double)microtime()*1000000); //ランダムなインデックスを取得します: $rand = mt_rand(0, count($files)-1); //もう一度確認してください: if (!isset($files[$rand])){ die('配列インデックスが見つかりません! 非常に奇妙です!'); } // ランダムなファイルを返します: $folder を返します [$rand]; }
//使用デモ: // "jpg|png|gif" は、これらの拡張子を持つすべてのファイルに一致します print RandomFile('test_images/','jpg|png|gif'); // test_07.gif を返します // 「.*」はすべての拡張子 (すべてのファイル) に一致します print RandomFile('test_files/','.*'); // foobar_1.zipを返します // "[0-9]+" は、 に該当するすべての拡張子に一致します// 数字が含まれます (backup.1、backup.2 など) print RandomFile('test_files/','[0-9]+'); //backup.7を返します |
この記事が皆様の PHP プログラミング設計に役立つことを願っています。