* 相對路徑 -> 絕對路徑 realpath
<?php/** * @param string $in_rel: relative directory
* @param string $out_abs: absolute directory
*/define('path_max', 255);
function sub_rel2abs(string $in_rel, string &$out_abs)
// next...
$st_fpos = $st_pos; // set current pos to last pos
$st_pos++; // from next index
$st_pos = strpos($in_rel, directory_separator, $st_pos); // next separator index
} // while ( $npos != $st_pos )
// final separator
array_push($sv_path, substr($in_rel, $st_fpos));
$lpc = 0; // loop count
$i_max = count($sv_path);
while ($lpc < $i_max && 0 === $i_rtn) else
$lpc++;
} // while (count($sv_path)>0)
// normal ending
if (0===$i_rtn)
return $i_rtn;
}// test
$indir = "/users/mch/code/php/directory";
is_dir($indir) || mkdir($indir, 0777, true);
$wd = __dir__;
chdir($indir);
$out = "";
echo sub_rel2abs("../../../eclipse-workspace/blog.zip", $out).php_eol;
echo $out.php_eol;
chdir($wd);
@rmdir($indir);
output:
0/users/mch/eclipse-workspace/blog.zip
這裡直接realpath就可以了,為什麼多此一舉?
* 絕對路徑 -> 相對路徑
<?php/** * $path相對於$base的相對路徑
* @param string $base
* @param string $path
*/function abs2rel(string $base, string $path)
$a = explode(directory_separator, $base);
$b = explode(directory_separator, $path);
$d = ; // $path push
$i = count($a)-1;
$sliceequals = function($a, $b, $j)
for ($i = $j; $i >= 0; $i--)
}return true;
};// 找到a,b陣列元素相同的下標
while (array_pop($a))
}array_push($d, "..");
}// 從首個不同元素開始
for ($i+=1; $i < count($b); $i++)
return ".".directory_separator.implode(directory_separator, $d);
}
絕對路徑轉換為相對路徑
最近寫了個工作上要用到的工具,要和同事共用,需要儲存各種檔案路徑,為了保證我們的檔案結構相同,且減少檔案錯亂的問題,在儲存檔案路徑的時候決定用相對路徑來實現,就像vs裡生成路徑一樣,隨便把專案考到哪個地方都能保持正常執行。需要轉換為相對路徑的源路徑 f a b c 1 c 2 c 3 c 4 先找到...
相對路徑絕對路徑
前兩天突然發現自己一直以來對相對路徑絕對路徑的理解都是錯的,於是趕緊查了相關資料。1.絕對路徑 絕對路徑是指檔案在硬碟上真正存在的路徑。例如 bg.jpg 這個是存放在硬碟的 e book 網頁布局 第2章 目錄下,那麼 bg.jpg 這個的絕對路徑就是 e book 網頁布局 第2章 bg.jpg...
絕對路徑 相對路徑
一 基本概念 1 相對路徑 相對於當前檔案的路徑。網頁中表示路徑一般使用這個方法。二 相對路徑常見的寫法 代表目前所在的目錄。開頭 代表根目錄。根目錄下有test1資料夾和image image1.jpg,test1下有index1.html檔案和test2資料夾。test2資料夾下有index2....