美文网首页
php求两个绝对路径的相对路径

php求两个绝对路径的相对路径

作者: 舒小贱 | 来源:发表于2017-09-22 17:12 被阅读0次

    在网上看到一个面试题,求B路径相对于A路径的相对路径,比如:
    $a = '/a/e.php',
    $b = '/a/b/c/d/1/2/c.php'
    计算出的$b相对于$a的相对路径应该是:../b/c/d/1/2/c.php

    $a = '/a/e.php';
    $b = '/a/b/c/d/1/2/c.php';
    
    // 求newPath相对于basePath的相对路径
    function getRelativePath($basePath, $newPath){
        $relative = '';
        $base_pathArr = explode("/", $basePath);
        $new_pathArr = explode("/", $newPath);
        $cnt_base = count($base_pathArr);
        for($i = 0; $i < $cnt_base;$i++){
            if($base_pathArr[$i] != $new_pathArr[$i]){
                break;
            }
        }
        if($i == $cnt_base){ //全匹配的话,单独做处理,其实当前文件夹下也可以不用
            $relative = './';
        }else{
            $n = $cnt_base - $i;
            for($j=0;$j<$n;$j++){
                $relative = $relative."../";
            }
        }
    
        $extraPath = implode("/", array_slice($new_pathArr, $i));
        $relative_path = $relative.$extraPath;
        return $relative_path;
    }
    
    $res = getRelativePath($a, $b);
    var_dump($res);
    

    输出结果为:

    string(18) "../b/c/d/1/2/c.php"
    

    相关文章

      网友评论

          本文标题:php求两个绝对路径的相对路径

          本文链接:https://www.haomeiwen.com/subject/cqbfextx.html