PHP 相對路徑轉換為絕對路徑 realpath

2022-03-22 18:18:01 字數 1952 閱讀 6044

* 相對路徑 -> 絕對路徑 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....