PHP获得两个绝对路径的相对路径
周末在家看面试题,没事儿写了个。
题目:
写一个函数,算出两个文件的相对路径
如 $a = '/a/b/c/d/e.php';
$b = '/a/b/12/34/c.php';
计算出 $b 相对于 $a 的相对路径应该是 ../../c/d
代码如下
<?php $a = '/c/d/e.php'; $b = '/a/b/13/34/j/c.php'; $b = '/a/b/c/d/e.php'; $a = '/a/b/12/34/c.php'; function getRelativeDir($a, $b) { $dir_a = dirname($a); $dir_b = dirname($b); $dir_a_arr = explode('/', trim($dir_a, '/')); $dir_b_arr = explode('/', trim($dir_b, '/')); $i = 0; print_r($dir_a_arr); print_r($dir_b_arr); while($dir_a_arr[$i] == $dir_b_arr[$i]) { unset($dir_a_arr[$i]); $i++; } $back = count($dir_b_arr) - $i; $relative_path = $dir_b.'/'; while($back--) { $relative_path .= '../'; } $relative_path .= implode('/', $dir_a_arr); return $relative_path; } echo getRelativeDir($a, $b);