本帖最后由 Sian 于 2016-1-2 20:53 编辑
[PHP] 纯文本查看 复制代码 <?php
$path1 = "c:/windows/system32/web/etc/file1.txt";
$path2 = "c:/windows/system/calc.exe";
function abspath($p1, $p2){
$result = "";
// 1、取路径分割字符串
// c:/windows/system32/web/etc
$p1 = dirname($p1);
// ["c:", "windws", "system32", "web", "etc"]
$p1 = explode("/", $p1);
$p2 = dirname($p2);
$p2 = explode("/", $p2);
// 2、去掉重复部分
$n = min(array(count($p1), count($p2)));
for ($i = 0; $i < $n; $i++){
if($p1[$i] == $p2[$i]){
// 去掉数组中的"c:"、"windows"
unset($p1[$i]);
unset($p2[$i]);
}else{
break;
}
}
// 3、还原相对层级
$result = str_repeat("../", count($p1));
// 4、拼装相对位置
$result .= implode("/", $p2);
return $result;
}
// 输出"../../../system"
// path2相对path1位置为向上3级目录再进入system目录
echo abspath($path1, $path2); 输出结果:
../../../system |