本文實例講述了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程序設計有所幫助。