题目:写一个函数,算出两个文件的相对路径如 $a = '/a/b/c/d/e.php'; $b = '/a/b/12/34/c.php';
计算出 $b 相对于 $a 的相对路径应该是 http://www.cnblogs.com/c/d
答:
1 <?php
2
3
4
5 function getRelative($a , $b)
6
7 {
8
9 $arr_a = explode("/" , $a) ;
10
11 $brr_b = explode("/" , $b) ;
12
13 $i = 1 ;
14
15 while (true) {
16
17 if($arr_a[$i] == $brr_b[$i]) {
18
19 $i ++ ;
20
21 } else {
22
23 break ;
24
25 }
26
27 }
28
29
30
31 $c = count($brr_b) ;
32
33 $d = count($arr_a) ;
34
35 $e = ($c>$d)?$c:$d ;
36
37 $str1 = '' ;
38
39 $str2 = '' ;
40
41 for ($j = $i ;$j<$e ;$j++) {
42
43 if(isset($arr_a[$j])) {
44
45 if($j<($d-1)){
46
47 $str1 .= $arr_a[$j] . "/" ;
48
49 } else {
50
51 $str1 .= $arr_a[$j] ;
52
53 }
54
55
56
57 }
58
59
60
61 if(isset($brr_b[$j])) {
62
63 $str2 .= "../" ;
64
65 }
66
67 }
68
69 return $str2 . $str1 ;
70
71 }
72
73
74
75 $a = "/c/b/c/d/k/h/t/e.php" ;
76
77 $b = "/a/b/e/f/h.php" ;
78
79 $relative = getRelative($a,$b) ;
80
81 var_dump($relative);
82
83 ?>
运行结果:string(34) http://www.cnblogs.com/http://www.cnblogs.com/../c/b/c/d/k/h/t/e.php
浙公网安备 33010602011771号