<?php
/**
* 计算两个文件的相对路径
*/
function relative_path($path1, $path2)
{
$arr1 = explode('/', dirname($path1));
$arr2 = explode('/', dirname($path2));
for ($i = 0, $len = count($arr2); $i < $len; $i++) {
if ($arr1[$i] != $arr2[$i]) {
break;
}
}
//不在用一个根目录下面
if ($i == 1) {
$return_path = array();
}
//在同一个根目录下
if ($i != 1 && $i < $len) {
$return_path = array_fill(0, $len - $i, "..");
}
#在同一个目录下
if ($i == $len) {
$return_path = array("./");
}
$return_path = array_merge($return_path, array_slice($arr1, $i));
return implode('/', $return_path);
}
//测试一下
$a = '/a/b/c/d/e.php';
$b = '/a/b/12/34/c.php';
echo relative_path($a, $b);

  

如果本文章已帮助到您!

php 计算两个文件的相对路径的更多相关文章

  1. php源码之计算两个文件的相对路径

    <?php //计算出两个文件的相对路径即path2相对于$path1的相对路径 // http://www.manongjc.com/article/1342.html function ge ...

  2. PHP两个文件的相对路径

    /** * relativePath 计算两个文件的相对路径 * @param file1 参作为考路径 * @param file2 相对于$file1的路径 */ function relativ ...

  3. C#计算两个文件的相对目录算法

    C#计算两个文件的相对目录算法 楼主大菜鸟一只,第一次写技术博客,如果有概念错误或代码不规范的地方,还请各位多多批评指正.话不多说,来看题: 前一阵子开发了一个用户控件,里面调用了很多css,js等资 ...

  4. Linux shell 计算两个文件的并集、交集、差集

    假设我们现在有两个文件 a.txt .b.txt a.txt 中的内容如下: a c 1 3 d 4 b.txt 中的内容如下: a b e 2 1 5 # Example 01 计算并集: [roo ...

  5. php 求两个文件的相对路径

    网上看了一些这个题的一些解答方法,不过大多数就是对目前需求而定的,比如 $a = '/a/b/c/d/e.php'; $b = '/a/d/12/34/c.php'; getpath($a , $b ...

  6. .NET CORE下最快比较两个文件内容是否相同的方法

    本文因为未考虑磁盘缓存, 结果不是很准确, 更严谨的结果请参看本博文的续集 最近项目有个需求,需要比较两个任意大小文件的内容是否相同,要求如下: 项目是.NET CORE,所以使用C#进行编写比较方法 ...

  7. php 两个文件之间的相对路径的计算方法

    php 两个文件之间的相对路径的计算方法 比如: 文件A 的路径是 /home/web/lib/img/cache.php 文件B的路径是 /home/web/api/img/show.php 那么. ...

  8. Path,Files巩固,题目:从键盘接收两个文件夹路径,把其中一个文件夹中(包含内容)拷贝到另一个文件夹中

    这个题目用传统的File,InputStream可以做,但是如果用Files,Path类做,虽然思路上会困难一些,但是代码简洁了很多,以下是代码: import java.io.IOException ...

  9. PHP计算两个绝对路径的相对路径

    用PHP计算两个绝对路径的相对路径,该如何求呢? 先根据分隔符切割,然后查找相同 异同点,然后开始有相同点,从相同点结束为止开始拼接剩余部分,没有的话,到达根路径拼接整体. 截图如下: 代码如下: & ...

随机推荐

  1. Oracle基础之Merge into

    Merge into语句是Oracle9i新增的语法,用来合并UPDATE和INSERT语句. 通过MERGE语句,根据一张表或多表联合查询的连接条件对另外一张表进行查询,连接条件匹配上的进行UPDA ...

  2. mybatis支持的jdbc类型

    参考mybatis的枚举JdbcType源码: 关于这些类型mybatis是如何处理可以看一下TypeHandler类的源码.

  3. SpringMVC学习(四)——处理器Handler的各种常用实现

    代码:http://files.cnblogs.com/files/douJiangYouTiao888/MultiActionController.zip 在使用springMVC的开发过程中,Ha ...

  4. maven学习(七)后续扩展、资料

    写这几篇博客的来源是 "maven实战 + 网上的博客 + 平时使用的心得 ".记录的都是比较常用的东西,也有一些只做了大概了解.或者干脆直接略过,在这里做一下总结,如果有需要在进 ...

  5. nginx 应用包编译及常用文件配置

    1.zlib wget http://www.zlib.net/fossils/zlib-1.2.8.tar.gz 2.openssl wget http://www.openssl.org/sour ...

  6. vbox安装 ubuntu server 后 安装增强包

    用vbox安装虚拟机系统如果不装增强包, 有很多东西就有点不好用-用vbox安装ubuntu server时,点击菜单中的安装增强功能.因为ubuntu server版本没有ui,所以不能很方便滴找到 ...

  7. SQL表创建注意事项

    CREATE TABLE V_USER ( AUTOID ), USERID BYTE) NOT NULL, USERNAME BYTE) NOT NULL, USERPASSWORD BYTE) N ...

  8. Python 输出中文的笔记

    import sysreload(sys)sys.setdefaultencoding('utf8') 导入csv乱码: 加入: import codecs csvfile.write(codecs. ...

  9. PHP不定维数组去除空值

    最近遇到一个问题,是将不定维数组的空值去除,回来研究了一下,写出来了,不知道是否还能优化 写的不好的,如果有好的想法或者好的实现方法,欢迎提出来,如果哪里写错了,也欢迎大牛可以讲解一下 代码如下,欢迎 ...

  10. EOJ Monthly 2019.1 唐纳德先生与这真的是签到题吗 【数学+暴力+multiset】

    传送门:https://acm.ecnu.edu.cn/contest/126/ C. 唐纳德先生与这真的是签到题吗 单测试点时限: 6.0 秒 内存限制: 1024 MB 唐纳德先生在出月赛的过程中 ...