1 function getpathinfo( $a, $b ) { 2 3 $a2array = explode('/', $a); 4 5 $b2array = explode('/', $b); 6 7 $pathinfo = ''; 8 9 for( $i = 1; $i <= count($b2array)-2; $i++ ) { 10 11 $pathinfo.=$a2array[$i] == $b2array[$i] ? '../' : $b2array[$i].'/'; 12 } 13 print_R($pathinfo); 14 15 } 16 $a = 'a/b/c/d/e.php'; 17 $b = 'a/b/r/12/34/c.php'; 18 getpathinfo($a, $b);
1 function compara_path($path_a, $path_b) { 2 //切割路径. 3 $array_a =explode('/', $path_a); 4 $array_b =explode('/', $path_b); 5 //从数组中删除最后的文件,剩下的全为文件夹名称. 6 $file_a =array_pop($array_a); //array_pop() 弹出并返回 array 数组的最后一个单元 7 $file_b =array_pop($array_b); 8 //子目录个数. 9 $a_len =count($array_a); 10 $b_len =count($array_b); 11 //循环求出第几个目录不同. 12 for ( $i =0; $i < $a_len; $i++ ) { 13 if ($array_a[$i] != $array_b[$i] ) { 14 break; 15 } 16 } 17 //求出相对路径. 18 $com_path =""; 19 for ( $j =0; $j < $a_len - $i; $j++ ) { 20 $com_path .='../'; 21 } 22 for ( $i; $i< $b_len; $i++ ) { 23 $com_path .=$array_b[$i] . '/'; 24 } 25 $com_path .=$file_b; 26 return $com_path; 27 } 28 $a = 'a/b/c/d/e.php'; 29 $b = 'a/b/r/12/34/c.php'; 30 echo compara_path($a, $b);