例如:文件A 的路径是 /home/web/lib/img/cache.php
文件B的路径是 /home/web/api/img/temp/show.php
那么,文件A相对于文件B的路径是 ../../lib/img/cache.php
function getRelativePath($urla,$urlb){ /*******第一步:获取两个文件的相同路径并去掉*****/ //获取路径名 $a_dirname=dirname($urla); //$a_dirname=/home/web/lib/img/ $b_dirname=dirname($urlb); //$b_dirname=/home/web/api/img/temp //去掉左边的"/" $a_dirname=trim($urla,"/"); $b_dirname=trim($urlb,"/"); // $a_dirname=trim($a_dirname,"/"); // $b_dirname=trim($b_dirname,"/"); echo $a_dirname,",",$b_dirname."<br>"; //分割路径名 $a_arr=explode("/", $a_dirname); $b_arr=explode("/", $b_dirname); $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; } } // print_r($a_arr); /******将相同部分用"../代替"并重新组合成相对路径******/ $relativepath=str_repeat("../", $count).implode("/", $a_arr); echo $relativepath; } $urla="/home/web/lib/img/cache.php"; $urlb="/home/web/api/img/temp/show.php"; getRelativePath($urla,$urlb)
原文地址:http://fengguangke.blog.51cto.com/6379465/1535099