写一个函数,算出两个文件的相对路径 (b相对于a)

[url]http://hi.baidu.com/ken00821/blog/item/6a4cf8d48dc7a4ce50da4b09.html[/url]

function getRelativePath($a,$b){
$a_url = array(dirname($a));
$b_url = array(dirname($b));
$a_arr = explode('/',$a_url[0]);
$b_arr = explode('/',$b_url[0]);
$len = count($a_arr);
$art1 = '';
$art2 = '';
for($i=1;$i<$len;$i++){
if($a_arr[$i]<>$b_arr[$i]){
$art1.= '../';
$art2.= $a_arr[$i].'/';
}
}
return $art1.$art2;
}
$a = '/a/b/c/d/e.php';
$b = '/a/b/12/34/c.php';

echo getRelativePath($a, $b); //../../c/d/



解决的问题:当你在一个文件可能会被很多个文件包含,并且路径不过顶的时候,可能会使用到这个方法:这个方法是对上面方法的修改:
function getRelativePath($a,$b){
// =/MyWebSite/dev/gov1Dev/config/dbConfig.php
// =/MyWebSite/dev/gov1Dev/index.php

//a=/MyWebSite/dev/gov1Dev/config/dbConfig.php
//b=/MyWebSite/dev/gov1Dev/pages/level1.php

//echo "a=".$a."<br>";
//echo "b=".$b."<br>";
$fileName = substr($a,strripos($a,"/")+1);
$a_url = array(dirname($a));
$b_url = array(dirname($b));
$a_arr = explode('/',$a_url[0]);
$b_arr = explode('/',$b_url[0]);
$len = count($a_arr);
$len1 = count($b_arr);
$art1 = '';
$art2 = '';
for($i=1;$i<$len;$i++){
if($a_arr[$i]<>$b_arr[$i]){
$art1.= '../';
$art2.= $a_arr[$i].'/';
}
}
if((count($a_arr)-count($b_arr))>0)
return $art2.$fileName;
else
return $art1.$art2.$fileName;
//return $art2.$fileName;
}



第一个参数: 被包含文件:/dev/gov1Dev/config/dbConfig.php
第二个参数: 包含文件:/dev/gov1Dev/pages/level2.php
得到结果:../config/dbConfig.php

那么,在level.php包含dbConfig的应该写成:../config/dbConfig.php
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值