龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > php编程 >

php 求相对路径方法小研究

时间:2015-03-26 15:33来源:网络整理 作者:网络 点击:
分享到:
求相对路径方法小研究 如题,求两路径相对路径,求拍砖!**[PHP]代码**[代码片段(38行)]

如题,求两路径相对路径,求拍砖!

[PHP]代码

/**
* 求两路径的相对路径
* @param string $patha  路径a
* @param string $pathb  路径b
* @author Joychao <joy@joychao.cc>
* @link   http://www.joychao.cc
* @return string 相对路径
*/
function getRelativePath($patha,$pathb){
    $arr_a=explode('/',trim(dirname($patha),'/'));
    $arr_b=explode('/',trim(dirname($pathb),'/'));
    $n=min(count($arr_a),count($arr_b));//用最短路径来循环
    $flag=true;//标记位[标记是否完全没有交集]
    for($i=0;$i<$n;$i++){
        if($arr_a[$i]==$arr_b[$i]){
            unset($arr_a[$i],$arr_b[$i]);//去除前面相同的部分
        }else{
            if($i==0)
                $flag=false;//两路径没有交集
            break;//停止循环
        }
    }

    $str=$flag?str_repeat('../',count($arr_b)+1):'/';//没有交集则为根目录"/"[Linux情况,windows自己改]
    return $str.join('/',$arr_a);//拼接并返回
}
//TEST

$a ='/a/b/c/d/e.php';
$b ='/a/b/12/34/c.php';
echo '路径a:'.$a;
echo '<br />路径b:'.$b;
echo '<br />路径a和路径b的相对路径(用c.php去访问e.php路径)为:';
echo getRelativePath($a,$b);
//-----OUTPUT-------------=
路径a:/a/b/c/d/e.php
路径b:/a/b/12/34/c.php
路径a和路径b的相对路径(用c.php去访问e.php路径)为:../../../c/d
精彩图集

赞助商链接