php计算两个文件夹的相对路径,php 计算两个目录的相对路径

计算两个目录的相对路径,网上有好多代码,发现好多是用array_diff_assoc这个函数,这样不对.

/**

* Created by PhpStorm.

* User: 优美代码

* Date: 2019/9/9

* Time: 19:59

*/

function getPath($path1, $path2)

{

//是否是真实的路径格式 这里省略判断了,

//两个文件相同时候,直接返回错误

if ($path1 == $path2) {

return false;

}

$arr1 = explode('/', $path1);

$arr2 = explode('/', $path2);

$count1 = count($arr1);

for ($i = 0; $i < $count1; $i++) {

//因为根目录都是开始"/"开始的.比较到不一致时候终止,

if ($arr1[$i] !== $arr2[$i]) {

break;

}

}

//需要回退的次数

$back_num = $count1 - $i - 1;

//回退到交叉点

if ($back_num == 0) {

$back_str = './';

} else {

$back_str = str_repeat('../', $back_num);

}

//删除第二个路径中,与第一个路径里相同的部分

//也就是删掉交叉点和前面的东西

array_splice($arr2, 0, $i);

$path2 = implode('/', $arr2);

//组合起来

return $back_str . $path2;

}

$path1 = '/data/www/app/book/a/d/a.php';

$path2 = '/data/app/app/book/b.php';

$path1 = '/data/www/app1/shop/model/index.php';

$path2 = '/data/www/app1/user.php';

echo getPath($path1, $path2);

说说代码原理:

给出两个路径

a是 /data/www/app1/shop/model/index.php

b是 /data/www/app1/user/model/ok/user.php

两个路径啊a,b,想象成两条河流, 有一个共同的源头是根目录 /,还有一个分支点 app1

分析第一个路径,

找到分支点 app1,从分支点开始数目录层次深度是m,

这样用m个../拼起来,就返回到分支点app1,

第二个路径的交汇点之后的路径"user/model/ok/user.php"

组成了 ../../user/model/ok/user.php

这就是b相对于a的,相对路径了 (在a文件中 引入b文件,用到的)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值