php相对地址代码,php 获取相对路径实例代码

该博客探讨了如何在PHP中计算两个文件路径之间的相对路径。通过分析并比较这两个路径,函数getRelativePath()被用来生成从路径$a$到路径$b$的相对路径。示例展示了如何使用该函数以及其内部的逻辑,包括使用dirname(),explode(),array_diff(),array_intersect()等函数。此外,还提供了一个不同的实现方法,强调了路径操作和相对路径计算的重要性。
摘要由CSDN通过智能技术生成

function getRelativePath($a, $b) {

$returnPath = array(dirname($b));

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

$arrB = explode('/', $returnPath[0]);

for ($n = 1, $len = count($arrB); $n < $len; $n++) {

if ($arrA[$n] != $arrB[$n]) {

break;

}

}

if ($len - $n > 0) {

$returnPath = array_merge($returnPath, array_fill(1, $len - $n, '..'));

}

$returnPath = array_merge($returnPath, array_slice($arrA, $n));

return implode('/', $returnPath);

}

var_dump(getRelativePath($a, $b));

//方法二

$a = "/a/b/c/d/index.php";

//echo basename($a,'.php');// 返回路径中文件名部分

//echo dirname($a);

$b = "/a/b/12/34/index2.php";

function getRelativePath($path1,$path2){

$p1 = dirname($path1);

$p2 = dirname($path2);

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

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

$diff_arr= array_diff($arr2,$arr1); //计算差集 注意这里 是谁相对谁的

$inter_arr = array_intersect($arr1,$arr2);//计算交集

$leng = count($inter_arr); //长度是以交集的为准 即求..部分

for($i=1;$i

$inter_arr[$i] = '..';

}

$merge_arr = array_merge($inter_arr,$diff_arr);

$fina_arr = implode('/',$merge_arr);

return $fina_arr;

}

var_dump(getRelativePath($a,$b));

//返回 string '/../../12/34' (length=12)

//如果改成$diff_arr= array_diff($arr1,$arr2); 就返回string '/../../c/d (length=12)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值