这道题其实并不难,考点主要在函数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 ));
|
以上代码是不是很简单啊,就这几个函数,函数掌握了,这道题就很容易的解决了,希望本文分享对大家有所帮助。