本文實(shí)例講述了php計(jì)算兩個(gè)文件相對(duì)路徑的方法。分享給大家供大家參考。具體如下:
一、問(wèn)題:
寫(xiě)一個(gè)php函數(shù)算出兩個(gè)文件的相對(duì)路徑。例如$a="/a/b/c/d/e.php"; $b="/a/b/12/34/c.php",B相對(duì)于A的相對(duì)路徑是什么?
二、解決方法:
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相對(duì)于$a的相對(duì)路徑 * @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 --; } } // 尋找第一個(gè)公共結(jié)點(diǎn) for ( $i = $countb - 1; $i >= 0;) { if ( $patha [ $i ] != $pathb [ $i ]) { $path .= "../" ; $i --; } else { //判斷是否為真正的第一個(gè)公共結(jié)點(diǎn),防止出現(xiàn)子目錄重名情況 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 ; |
希望本文所述對(duì)大家的php程序設(shè)計(jì)有所幫助。