`

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

    博客分类:
  • PHP
 
阅读更多
http://hi.baidu.com/ken00821/blog/item/6a4cf8d48dc7a4ce50da4b09.html

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
分享到:
评论

相关推荐

    校园最短路径规划分析可视化

    Dijkstra算法是一种用于查找图中两个节点间最短路径的算法,它保证了找到的路径是最优的。而A*算法则在Dijkstra的基础上引入了启发式函数,使得搜索过程更加高效,尤其适用于实时导航系统。 在校园环境中,我们可以...

    C#两个经纬度方向角计算源码

    在IT领域,尤其是在地理信息系统(GIS)中,计算两个地理位置之间的方向角是一个常见的需求。这里我们关注的是一个C#实现的DEMO,用于计算两个经纬度坐标之间角度,以正北为0度到359度的范围。这个程序可能被用于...

    Cesium中贝塞尔曲线、抛物线引用(有混淆注意下载)

    在IT行业中,尤其是在3D图形渲染领域,Cesium是一个非常重要的开源JavaScript库,它用于创建交互式的、基于Web的3D地球模型。本资源“Cesium中贝塞尔曲线、抛物线引用(有混淆注意下载)”显然是针对Cesium库中关于...

    A*算法求解八数码问题_C#语言

    1)AStar-EightDigital-Statistics文件夹:用来随机生成100个状态,并对这100个状态分别用P(n)与W(n)分别作为启发函数算出生成节点以及扩展节点,以供生成图表使用;运行界面如下: 2)Test文件夹:将0-8这9个...

    基于遗传算法机器人路径规划研究.pdf

    路径编码是将路径的可行解问题模拟为遗传算法相对于全局搜索空间进行的替换,其编码的合理性直接影响算法的效果。本文采用标记序列号的方法进行编码,即每条染色体是由栅格序列号组成,代表机器人的路径。种群初始化...

    取两点的最近路径.zip易语言项目例子源码下载

    4. **结果展示**:在图形界面上以某种方式(如线条、箭头)展示出两点间的最短路径。 学习该项目,不仅可以加深对易语言的理解,还能掌握图论和路径搜索算法的实践应用。对于学生来说,这有助于提高编程能力,对于...

    DOA估计算法_传播算子方法_传播算子DOA_DOA_pm算法_DOA估计_

    在信号处理领域,尤其是阵列信号处理中,DOA(Direction of Arrival)估计算法是至关重要的技术之一,主要用于确定多个同时到达的信号源相对于接收阵列的方向。本压缩包包含两个关键算法的MATLAB实现:MUSIC...

    Qt Creator 的安装和hello world 程序+其他程序的编写--不是一般的好

    到这里,我们就实现了一个界面结束执行,然后弹出另一个 界面的程序。下面我们在主窗口上加一个按钮,按下该按钮,弹出一个对话框, 但这个对话框关闭,不会使主窗口关闭。 8.如下图,在主窗口加入按钮,显示文本为...

    powerbuilder

    用法在一个打印作业中,应用程序能够最多同时定义8种字体。当应用程序需要使用更多的字体时,可以在使用了某个字体号输出内容后使用PrintDefineFont()函数将该字体号对应的字体更换为其它字体。 ----------------...

    语言程序设计课后习题答案

    2-5 请写出C++语句声明一个常量PI,值为3.1416;再声明一个浮点型变量a,把PI的值赋给a。 解: const float PI = 3.1416; float a = PI; 2-6 在下面的枚举类型中,Blue的值是多少? enum COLOR { WHITE, BLACK = ...

    哈密尔顿回路-图论.rar

    在MATLAB中,shortestpath函数提供了一个便捷的方式来计算图中两点间的最短路径。这一功能与图论的其他算法如prim、kruskal等结合起来,可以构建出最小生成树,这对于构建高效的通信网络、优化交通路线等实际问题...

    5800线路坐标正反算程序.doc

    在直角坐标系中,如果已知点A的坐标(XA, YA)和点B相对于点A的方向(方位角FWJ,通常以度为单位)以及两点之间的水平距离JULI,可以通过以下公式计算出点B的坐标(XB, YB): \[ XB = XA + JULI \cdot \cos(FWJ) ...

    考虑地球曲率情况下两点距离问题的求解

    当已知一个点的坐标和另一个点相对于该点的距离及方位角时,可以利用球面三角学中的公式来反推出未知点的经纬度坐标。具体来说,假设已知点 \( A(\phi_A, \lambda_A) \) 和未知点 \( B(\phi_B, \lambda_B) \) 之间的...

    超级有影响力霸气的Java面试题大全文档

    例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。 当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望...

    migong.rar_迷宫游戏

    例如,DFS可以帮助我们在有限的空间内寻找可行的路径,而A*搜索算法则能以更高效的方式找到从起点到终点的最短路径,其关键在于启发式函数,能够估算剩余路径的成本,从而引导搜索方向。 在"migong.rar"的压缩包中...

    TCL教程 NS2中的tcl

    例如,`proc add {a b} {return [expr $a + $b]}`定义了一个名为`add`的过程,它接受两个参数并返回它们的和。 - **局部变量和全局变量** 在过程中定义的变量默认是局部变量,只能在该过程中使用。要引用外部定义...

    语音识别的MATLAB实现

    在此线程中做如下两个工作:将数据送入buffer,并将数据传入某个参数(其调用一个函数,将buffer中的数据送入该函数的参数*pt),而这些数据正是我们要利用和处理的数字化的语音信息。 2 声音的预处理: 声音信息的...

    NLOS环境下无线通信网络中的TDOAAOA混合定位算

    它基于这样一个原理:如果两个或多个接收器接收到同一信号的时间差已知,那么可以推断出信号源相对于这些接收器的位置关系。TDOA技术的优点在于其不受多径效应的影响,但在NLOS环境下可能会因为信号路径的变化而产生...

Global site tag (gtag.js) - Google Analytics