?phpfunction getRelativePath($a,$b){$a_str=$b_str='';for($i=0;$istrlen($b);$i++){if($a[$i]!=$b[$i]){$a_str=substr($a,$i);$b_str=substr($b,$i);break;}}$num=substr_count($b_str,"/");//计算/出现的次数return str_repeat("../",$num).$a_str
<?php
function getRelativePath($a,$b){
$a_str=$b_str='';
for($i=0;$i<strlen($b);$i++){
if($a[$i]!=$b[$i]){
$a_str=substr($a,$i);
$b_str=substr($b,$i);
break;
}
}
$num=substr_count($b_str,"/");//计算/出现的次数
return str_repeat("../",$num).$a_str;
}
function getRelativePath2($urla,$urlb){
$a_arr=explode("/", trim($urla,"/"));//去掉左边的/并分割
$b_arr=explode("/", trim($urlb,"/"));
$count=0; //获取相同路径部分的个数
$num=min(count($a_arr),count($b_arr));
//去除相同的部分
for ($i=0;$i<$num;$i++){
if ($a_arr[$i]==$b_arr[$i]){
unset($a_arr[$i]);
$count++;
}
else{
break;
}
}
//相同部分用../替换
$relativepath=str_repeat("../", $count).implode("/", $a_arr);
return $relativepath;
}
$path1 = '/var/www/img/a.php';
$path2 = '/var/www/api/img/b.php';
echo(getRelativePath($path1,$path2)).'<br/>';//../../img/a.php
echo(getRelativePath2($path1,$path2)).'<br/>';//../../img/a.php