<?php
$a = '/a/b/12/34/c.php';
$b = '/a/b/c/f/d/e.php';
echo getRelativePath($a, $b);
//求$a相对于$b的相对路径
function getRelativePath($path1, $path2)
{
$arr1 = explode('/', $path1);
$arr2 = explode('/', $path2);
// 获取相同路径的部分
$intersection = array_intersect_assoc($arr1, $arr2);
$depth = 0;
$len = count($intersection);
for ($i = 0; $i <= $len; $i++) {
$depth = $i;
if (!isset($intersection[$i])) {
break;
}
}
// 将path2的/ 转为 ../,path1获取后面的部分,然后合拼
// 计算前缀
$prefix_count = count($arr2) - $depth - 1;
if ($prefix_count > 0) {
$prefix = array_fill(0, $prefix_count, '..');
} else {
$prefix = ['.'];
}
return implode('/', array_merge($prefix, array_slice($arr1, $depth)));
}
11-03
478