注册 登录
  • 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

php计算两个文件的相对路径

PHP 水墨上仙 2334次浏览 已收录 手机上查看

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

这是一个常见的php面试题

答案来自:http://blog.csdn.net/wzy_1988/

<?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/e.php";
$b = "/a/c.php";

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


喜欢 (0)
[开心洋葱]
分享 (0)
关于作者:
水墨上仙
……
加载中……