php計算兩個文件相對路徑的方法

文章主要介紹了php計算兩個文件相對路徑的方法,涉及php操作字符串的`技巧,具有一定參考借鑑價值,需要的朋友可以參考下.

php計算兩個文件相對路徑的方法

  一、問題:

寫一個php函數算出兩個文件的相對路徑。例如$a="/a/b/c/d/"; $b="/a/b/12/34/",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/";

$b = "/a/";

$path = getRelativePath($a, $b);

echo $path;

希望本文所述對大家的php程序設計有所幫助。