Home > Article > Backend Development > PHP implementation code for calculating the relative paths of two files
How to calculate the relative path between two files? It is very simple to implement using PHP. Here is a piece of code that can calculate the relative paths of two files. Friends in need may wish to refer to it.
Calculate the relative paths of two files. For example, there is the following file: $a="/a/b/c/d/e.php"; $b="/a/b/12/34/c.php". So how to calculate the relative path of B relative to A? Code: <?php /** * 求$b相对于$a的相对路径 * @param string $a * @param string $b * @return string * @site bbs.it-home.org */ 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/e.php"; $b = "/a/c.php"; $path = getRelativePath($a, $b); echo $path; ?> |