本文实例讲述了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
|
function RandomFile( $folder = '' , $extensions = '.*' ){
// fix path:
$folder = trim( $folder );
$folder = ( $folder == '' ) ? './' : $folder ;
// check folder:
if (! is_dir ( $folder )){ die ( 'invalid folder given!' ); }
// create files array
$files = array ();
// open directory
if ( $dir = @opendir( $folder )){
// go trough all files:
while ( $file = readdir( $dir )){
if (!preg_match( '/^\.+$/' , $file ) and
preg_match( '/\.(' . $extensions . ')$/' , $file )){
// feed the array:
$files [] = $file ;
}
}
// close directory
closedir ( $dir );
}
else {
die ( 'Could not open the folder "' . $folder . '"' );
}
if ( count ( $files ) == 0){
die ( 'No files where found :-(' );
}
// seed random function:
mt_srand((double)microtime()*1000000);
// get an random index:
$rand = mt_rand(0, count ( $files )-1);
// check again:
if (!isset( $files [ $rand ])){
die ( 'Array index was not found! very strange!' );
}
// return the random file:
return $folder . $files [ $rand ];
}
//用法演示:
// "jpg|png|gif" matches all files with these extensions
print RandomFile( 'test_images/' , 'jpg|png|gif' );
// returns test_07.gif
// ".*" matches all extensions (all files)
print RandomFile( 'test_files/' , '.*' );
// returns foobar_1.zip
// "[0-9]+" matches all extensions that just
// contain numbers (like backup.1, backup.2)
print RandomFile( 'test_files/' , '[0-9]+' );
// returns backup.7
|
希望本文所述对大家的php程序设计有所帮助。