这道题其实并不难,考点主要在函数substr() strrchr() array_pop() strrpos() strpos() strrev() explode() pathinfo()。
废话不多说了,直接给大家贴代码了。
获取文件后缀,遍历目录层次
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
51
52
53
|
/** * 5种方式获取文件后缀名 * 这道题其实就是考函数substr() strrchr() array_pop() strrpos() strpos() strrev() explode() pathinfo() * @param string $filename 要处理的文件名 1.jpg/1.png/1.html/1.php * @return string .php/php */ function get_ext1( $filename ) { return strrchr ( $filename , '.' ); } function get_ext2( $filename ){ return substr ( $filename , strrpos ( $filename , '.' )); } function get_ext3( $filename ){ return array_pop ( explode ( '.' , $filename )); } function get_ext4( $filename ){ return pathinfo ( $filename ,PATHINFO_EXTENSION); } function get_ext5( $filename ){ return strrev ( substr ( strrev ( $filename ),0, strpos ( strrev ( $filename ), '.' ))); } $filename = "1.php" ; echo get_ext1( $filename ). "\n" ; echo get_ext2( $filename ). "\n" ; echo get_ext3( $filename ). "\n" ; echo get_ext4( $filename ). "\n" ; echo get_ext5( $filename ). "\n" ; /** * 遍历目录(递归) * @param string $dir 目录名且最后没有/ * @return array $files 整个目录结构 */ function myScandir( $dir ) { $files = array (); if ( $handle = opendir( $dir )){ while (( $file = readdir( $handle )) != false){ if ( $file != "." && $file != ".." ){ $newDir = $dir . "/" . $file ; if ( is_dir ( $newDir )){ $files [ $file ] = myScandir( $newDir ); } else { $files [] = $file ; } } } closedir ( $handle ); return $files ; } } $dir = "/dirname" ; print_r(myScandir( $dir )); |
以上代码是不是很简单啊,就这几个函数,函数掌握了,这道题就很容易的解决了,希望本文分享对大家有所帮助。