前一阵子面试的时候碰到一道题目,计算两个路径的相对路径。。。
例如:
$a = '/a/b/c/d/e.php';
$b = '/a/b/1/2/c.php';
计算$b相对于$a的相对路径用../表示,下面是计算函数:
function getRelativePath($a, $b) {
$relativePath = array(dirname($b));
$pathA = explode('/', $a);
$pathB = explode('/', $relativePath[0]);
$n = 1;
$len = count($pathB);
for ( ; $n < $len; $n++ ) {
if ( $pathA[$n] != $pathB[$n] ) {
break;
}
}
if ( $len - $n > 0 ) {
$relativePath = array_merge($relativePath, array_fill(0, $len - $n, '..'));
}
$relativePath = array_merge($relativePath, array_slice($pathA, $n));
}