php获取两个文件的相对路径

例如:文件A 的路径是 /home/web/lib/img/cache.php

文件B的路径是 /home/web/api/img/temp/show.php

那么,文件A相对于文件B的路径是 ../../lib/img/cache.php

function getRelativePath($urla,$urlb){
	/*******第一步:获取两个文件的相同路径并去掉*****/
	//获取路径名
	$a_dirname=dirname($urla);   //$a_dirname=/home/web/lib/img/
	$b_dirname=dirname($urlb);   //$b_dirname=/home/web/api/img/temp
	//去掉左边的"/"
	$a_dirname=trim($urla,"/");
	$b_dirname=trim($urlb,"/");
//	$a_dirname=trim($a_dirname,"/");
//	$b_dirname=trim($b_dirname,"/");
	echo $a_dirname,",",$b_dirname."<br>";
	//分割路径名
	$a_arr=explode("/", $a_dirname);
	$b_arr=explode("/", $b_dirname);
	$count=0; //获取相同路径部分的个数
	$num=min(count($a_arr),count($b_arr));
	//去除相同的部分
	for ($i=0;$i<$num;$i++)
	{
		if ($a_arr[$i]==$b_arr[$i]){
			unset($a_arr[$i]);
			$count++;
		}
		else{
			break;
		}
	}
	//	print_r($a_arr);
	/******将相同部分用"../代替"并重新组合成相对路径******/
	$relativepath=str_repeat("../", $count).implode("/", $a_arr);
	echo $relativepath;
}
$urla="/home/web/lib/img/cache.php";
$urlb="/home/web/api/img/temp/show.php";
getRelativePath($urla,$urlb)

php获取两个文件的相对路径,布布扣,bubuko.com

时间: 2024-12-17 06:43:46

php获取两个文件的相对路径的相关文章

PHP两个文件的相对路径

1 /** 2 * relativePath 计算两个文件的相对路径 3 * @param file1 参作为考路径 4 * @param file2 相对于$file1的路径 5 */ 6 function relativePath($file1, $file2){ 7 $aArr = explode('/', $file1); //explode函数用于切分字符串,返回切分后的数组,此处用'/'切分字符串 8 $bArr = explode('/', $file2); 9 10 $aDiff

JS魔法堂:获取当前脚本文件的绝对路径

一.前言 当写模块加载器时,获取当前脚本文件的绝对路径作为基础路径是必不可少的一步,下面我们一起来探讨一下这个问题吧! 二.各大浏览器的实现方式 [a]. Chrome和FF 超简单的一句足矣! var getCurrAbsPath = function(){ return document.currentScript.src; }; 这里利用了对象 document.currentScript ,它返回的是当前执行的script元素:然后调用script元素的src属性即可获取脚本文件的绝对路

一道PHP面试题,求两个文件的相对路径

首先原题是这样子的: 写一个函数,计算出两个文件的相对路径,如 $a = '/a/b/c/d/d.php',$b = '/a/b/1/2/c.php' 计算出的$b相对于$a的相对路径应该是:../../c/d 那么对于网上给出的答案,看了看貌似只能针对题目中给出的那个路径来计算,如果路径一变化,类似下面这样,那么那些程序好像没用了,当然有些是有用,但是还是报一些警告出来..... 例如: $a = '/a/b/c/d/e/f/g/h/e.php' $b = '/a/b/1/2/c.php' 再

图算法 - 只需“五步” ,获取两节点间的所有路径(非递归方式)

在实现 “图” 数据结构时,会遇到 “获取两点之间是所有路径” 这个算法问题,网上的资料大多都是利用递归算法来实现(见文末的参考文章). 我们知道在 JS 中用递归算法很容易会让调用栈溢出,为了能在生产环境中使用,必须要用非递归方式的去实现. 经过一番探索,实现的思路主要来自文章 <求两点间所有路径的遍历算法> ,只是该文中并没有给出具体的实现细节,需要自己去实现:最终本文的实现结合类似<算法 - 调度场算法(Shunting Yard Algorithm)> 中所提及的双栈来完成

js获取上传文件的绝对路径

在html中    <input type="file" id="importFile" />    <input type="button" onclick="upload()"/> <script>function upload() {    var filename = document.getElementById("importFile").value;    

struts2 JS获取上传文件的绝对路径,兼容IE和FF

因为file控件上传失败后会自动清空,所以使用文本框来保存上传路径,而且在不同的浏览器下,控件的样式也需要兼容.下面是自己用到的实例 // 初始化判断浏览器的版本,根据版本的不同使用不同的样式function getExplorer() { //IE if (navigator.userAgent.indexOf("MSIE")>=0) { document.getElementById("1").style.display = "block&quo

12.写一个函数,算出两个文件的相对路径

//计算出 c.php相对于e.php的相对路径应该是../../12/34 $a = '/a/b/c/d/e.php'; $b = '/a/b/12/34/c.php'; getpathinfo($a, $b); function getpathinfo( $a, $b ) { $a2array = explode('/', $a); $b2array = explode('/', $b); $pathinfo = ''; for( $i = 1; $i <= count($b2array)-

Python获取两个文件的交集、并集、差集

题记:朋友在处理数据时,需要解决这方面的问题,所以利用她给的代码,自己重新梳理了下,并成功运行. 代码如下: # coding:utf-8 s1 = set(open(r'C:\\Users\\yangwj\\Desktop\\2\\1.txt').readlines()) s2 = set(open(r'C:\\Users\\yangwj\\Desktop\\2\\2.txt').readlines()) ff = open('C:\\Users\\yangwj\\Desktop\\2\\12

php 求两个文件的相对路径

网上看了一些这个题的一些解答方法,不过大多数就是对目前需求而定的,比如 $a = '/a/b/c/d/e.php'; $b = '/a/d/12/34/c.php'; getpath($a , $b ); public function getpath($a, $b) { $aarr = explode('/', $a); $barr = explode('/', $b); $count = count($barr) - 2; $pathinfo = ''; for($i = 1; $i <=