php求兩個絕對路徑的相對路徑

在網上看到一個面試題,求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"
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1. 關于診斷X線機準直器的作用,錯誤的是()。 (6.0 分) A. 顯示照射野 B. 顯示中心線 C. 屏蔽多...
    我們村我最帥閱讀 10,797評論 0 5
  • 原來一直覺得大學有一場轟轟烈烈的戀愛才算完整,也一直在留意與被留意,可是心里哪怕想戀愛到瘋掉也從沒放低過我對愛的要...
    大口喝水閱讀 193評論 0 0
  • 6 夏天的時候,我一般都是在空調房里躺尸一天,大白就說我了。 “你這么宅不愛動,遲早要長胖。” 我看了一眼他臉上的...
    檬二閱讀 534評論 16 14
  • 今日閱讀《自控力》26-36頁。關注兩個問題:1.五分鐘大腦冥想。2.兩種不同的威脅。 1.五分鐘大腦冥想 五分鐘...
    sky10閱讀 243評論 0 0