本文实例讲述了php计算两个文件相对路径的方法。分享给大家供大家参考。具体如下:
一、问题:
写一个php函数算出两个文件的相对路径。例如$a="/a/b/c/d/e.php"; $b="/a/b/12/34/c.php",B相对于A的相对路径是什么?
二、解决方法:
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
|
<?php /** * 求$b相对于$a的相对路径 * @param string $a * @param string $b * @return string */ function getRelativePath ( $a , $b ) { $patha = explode ( '/' , $a ); $pathb = explode ( '/' , $b ); $counta = count ( $patha ) - 1; $countb = count ( $pathb ) - 1; $path = "../" ; if ( $countb > $counta ) { while ( $countb > $counta ) { $path .= "../" ; $countb --; } } // 寻找第一个公共结点 for ( $i = $countb - 1; $i >= 0;) { if ( $patha [ $i ] != $pathb [ $i ]) { $path .= "../" ; $i --; } else { //判断是否为真正的第一个公共结点,防止出现子目录重名情况 for ( $j = $i - 1, $flag = 1; $j >= 0; $j --) { if ( $patha [ $j ] == $pathb [ $j ]) { continue ; } else { $flag = 0; break ; } } if ( $flag ) break ; else $i ++; } } for ( $i += 1; $i <= $counta ; $i ++) { $path .= $patha [ $i ] . "/" ; } return $path ; } $a = "/a/c/d/e.php" ; $b = "/a/c.php" ; $path = getRelativePath( $a , $b ); echo $path ; |
希望本文所述对大家的php程序设计有所帮助。