实用php计算两个文件相对路径

来源:文书网 1.52W

php计算两个文件相对路径的方法,涉及php操作字符串的技巧,具有一定参考借鉴价值,需要的朋友可以参考下.

实用php计算两个文件相对路径

本文实例讲述了php计算两个文件相对路径的方法。分享给大家供大家参考。具体如下:

  一、问题:

写一个php函数算出两个文件的.相对路径。例如$a="/a/b/c/d/"; $b="/a/b/12/34/",B相对于A的相对路径是什么?

  二、解决方法:

50

<?php

/**

* 求$b相对于$a的相对路径

* @param string $a

* @param string $b

* @return string

*/

function getRelativePath ($a, $b)

{

$patha = explode('/', $a);

$pathb = explode('/', $b);

$counta = count($patha) - 1;

$countb = count($pathb) - 1;

$path = "../";

if ($countb > $counta) {

while ($countb > $counta) {

$path .= "../";

$countb --;

}

}

// 寻找第一个公共结点

for ($i = $countb - 1; $i >= 0;) {

if ($patha[$i] != $pathb[$i]) {

$path .= "../";

$i --;

} else {

//判断是否为真正的第一个公共结点,防止出现子目录重名情况

for ($j = $i - 1, $flag = 1; $j >= 0; $j --) {

if ($patha[$j] == $pathb[$j]) {

continue;

} else {

$flag = 0;

break;

}

}

if ($flag)

break;

else

$i ++;

}

}

for ($i += 1; $i <= $counta; $i ++) {

$path .= $patha[$i] . "/";

}

return $path;

}

$a = "/a/c/d/";

$b = "/a/";

$path = getRelativePath($a, $b);

热门标签