php从文件夹随机读取文件的方法

这篇文章主要介绍了php从文件夹随机读取文件的方法,可实现php从指定的目录随机读取文件及设置参数进行文件过滤的功能,需要的朋友可以参考下。

本文实例讲述了php从文件夹随机读取文件的方法,分享给大家供大家参考,具体实现方法如下:

  1. function RandomFile($folder='', $extensions='.*'){
  2. // fix path:
  3. $folder = trim($folder);
  4. $folder = ($folder == '') ? './' : $folder;
  5. // check folder:
  6. if (!is_dir($folder)){ die('invalid folder given!'); }
  7. // create files array
  8. $files = array();
  9. // open directory
  10. if ($dir = @opendir($folder)){
  11. // go trough all files:
  12. while($file = readdir($dir)){
  13. if (!preg_match('/^\.+$/', $file) and
  14. preg_match('/\.('.$extensions.')$/', $file)){
  15. // feed the array:
  16. $files[] = $file;
  17. }
  18. }
  19. // close directory
  20. closedir($dir);
  21. }
  22. else {
  23. die('Could not open the folder "'.$folder.'"');
  24. }
  25. if (count($files) == 0){
  26. die('No files where found :-(');
  27. }
  28. // seed random function:
  29. mt_srand((double)microtime()*1000000);
  30. // get an random index:
  31. $rand = mt_rand(0, count($files)-1);
  32. // check again:
  33. if (!isset($files[$rand])){
  34. die('Array index was not found! very strange!');
  35. }
  36. // return the random file:
  37. return $folder . $files[$rand];
  38. }
  39. //用法演示:
  40. // "jpg|png|gif" matches all files with these extensions
  41. print RandomFile('test_images/','jpg|png|gif');
  42. // returns test_07.gif
  43. // ".*" matches all extensions (all files)
  44. print RandomFile('test_files/','.*');
  45. // returns foobar_1.zip
  46. // "[0-9]+" matches all extensions that just
  47. // contain numbers (like backup.1, backup.2)
  48. print RandomFile('test_files/','[0-9]+');
  49. // returns backup.7