大概的在網上找了一下,覺得大家的實現的都不夠簡潔,于是自己寫了一個,寫完了,我在想,就是這樣么,這樣有什么問題么,這是最好的么。 比如如果路徑中出現 “///”, “//” 的分隔符改如何處理?
<?php function getRelativePath($path1, $path2){ // 參數判斷 if(!isset($path1) || !isset($path2)){ return '請檢查參數'; } $path1_arr = explode('/', $path1); $path2_arr = explode('/', $path2); $count = count($path1_arr); $res_path = ''; $pos = 0; // 異同部分開始的位置 foreach ($path1_arr as $key => $value) { if($value != $path2_arr[$key]){ $pos = $key; break; } } // 需要返回的層級數 $len = $count - $pos -1; // 拼接相對前綴 for($i = $len; $len > 0; $len--){ $res_path .= '../'; } // 求剩余路徑 $tail = implode('/', array_slice($path2_arr, $pos)); return $res_path . $tail; } echo getRelativePath('./a/b/d/e/f/2.jpg', './a/b/c/1.png');?>新聞熱點
疑難解答
圖片精選