1、获取目录下文件,不包括子目录
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
//获取某目录下所有文件、目录名(不包括子目录下文件、目录名) $handler = opendir( $dir ); while (( $filename = readdir( $handler )) !== false) { //务必使用!==,防止目录下出现类似文件名“0”等情况 if ( $filename != "." && $filename != ".." ) { $files [] = $filename ; } } } closedir ( $handler ); //打印所有文件名 foreach ( $filens as $value ) { echo $value . "<br />" ; } |
2、获取目录下所有文件,包括子目录
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
|
function get_allfiles( $path ,& $files ) { if ( is_dir ( $path )){ $dp = dir( $path ); while ( $file = $dp ->read()){ if ( $file != "." && $file != ".." ){ get_allfiles( $path . "/" . $file , $files ); } } $dp ->close(); } if ( is_file ( $path )){ $files [] = $path ; } } function get_filenamesbydir( $dir ){ $files = array (); get_allfiles( $dir , $files ); return $files ; } $filenames = get_filenamesbydir( "static/image/" ); //打印所有文件名,包括路径 foreach ( $filenames as $value ) { echo $value . "<br />" ; } |
计算两个文件之间的相对路径方法
php 计算两个文件之间的相对路径方法
例如:
文件A 的路径是 /home/web/lib/img/cache.php
文件B的路径是 /home/web/api/img/show.php
那么,文件A相对于文件B的路径是 ../../lib/img/cache.php,即文件B 访问 文件A的相对路径。
function getRelativePath
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
|
<?php /** 计算path1 相对于 path2 的路径,即在path2引用paht1的相对路径 * @param String $path1 * @param String $path2 * @return String */ function getRelativePath( $path1 , $path2 ){ $arr1 = explode ( '/' , $path1 ); $arr2 = explode ( '/' , $path2 ); // 获取相同路径的部分 $intersection = array_intersect_assoc ( $arr1 , $arr2 ); $depth = 0; for ( $i =0, $len = count ( $intersection ); $i < $len ; $i ++){ if (!isset( $intersection [ $i ])){ $depth = $i ; break ; } } // 将path2的/ 转为 ../,path1获取后面的部分,然后合拼 $tmp = array_merge ( array_fill (0, count ( $arr2 )- $depth -1, '..' ), array_slice ( $arr1 , $depth )); $relativePath = implode( '/' , $tmp ); return $relativePath ; } ?> |
demo
1
2
3
4
5
6
|
<?php $path1 = '/home/web/lib/img/cache.php' ; $path2 = '/home/web/api/img/show.php' ; echo getRelativePath( $path1 , $path2 ); // ../../lib/img/cache.php ?> |