文档章节

php 计算两个路径的相对路径

平果
 平果
发布于 2015/08/20 14:35
字数 262
阅读 15
收藏 0

网上看到一道是 给出两个路径,计算第一个路径和第二个路径的相对路径。

于是自己动手实现了一个。

主要实现思路 

1,分别用explode分隔一下两个路径。

2,用php的数组diff函数计算 $pathA 和 $pathB 的差集,

3,上一步得到的$pathA差集的数组的 count 就是需要向上多少个 ../

4,根据 $pathA差集的数组的 count  ,用偏移量计算出 $pathB 的差集.

5, 把第3步计算出来的 N 个 ../ 再加上 implode('/',  $pathB 的差集)  就是最后的路径。


以下是具体代码:

function getPath($pathA, $pathB){
    $pathA = explode('/', $pathA);
    $pathB = explode('/', $pathB);
    $diffA = array_diff_assoc($pathA, $pathB);
    $diffB = array_slice($pathB, count($pathA) - count($diffA));
    return str_repeat('../',count($diffA)-1).implode('/', $diffB);
}

echo  getPath('/a/b/c/d/d3/32/32.php', '/a/b/1/2dd/323/323/b.php');


当然实现的方法很多,可以一起讨论下。

© 著作权归作者所有

上一篇: 重回博客
下一篇: date的使用
平果
粉丝 3
博文 3
码字总数 953
作品 0
东城
程序员
私信 提问
Windows PHP 加速器--WinCache

微软新推出了配合FastCGI模式使用的WinCache扩展,这是一个可以显著增加PHP应用在Windows环境下使用速度的PHP加速器。所有的PHP应用都能够利用这个扩展所提供的加速功能而不需要修改任何代码...

王道中强流
2012/11/09
5.2K
0
RCP 获得图片路径

Class.getResourceAsStream 和 ClassLoader.getResourceAsStream 这两个方法还是略有区别的, 以前一直不加以区分,直到今天发现要写这样的代码的时候运行 错误, 才把这个问题澄清了一下。 ...

zhenghuazhi
2010/04/22
340
0
遇到一个麻烦的php问题,想让大家帮我看看,谢谢。

旧系统用到crc32()这个函数,本地开发的时候是32位的,现在服务器用到了64位的PHP。导致系统错误,咋办呢?有没有谁遇到过个问题呢?想让大家帮我出出主意。谢谢各位了,PHP是世界上最好的语...

深爱着你们
2015/01/07
227
2
PHP $_SERVER['PHP_SELF'] $_SERVER['SCRIPT_NAME'...

$SERVER['PHPSELF'] 当前执行脚本的文件名称 与document_root 相关 也就是和网站的根目录有关 输出文件对于网站根目录的位置信息 如果 PHP 以命令行方式运行,该变量在 PHP 4.3.0 之前无效。...

想个昵称
2013/09/23
300
0
arcgis 绝对、相对、UNC 和 URL

arcgis 绝对、相对、UNC 和 URL 您每天都通过路径浏览至数据和工具箱。在共享数据和工具之前,您对此可能没有做太多考虑,其实您也无需考虑。本部分将详细讨论以下方面内容:路径、定义不同类...

ke_ry
2017/04/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring使用ThreadPoolTaskExecutor自定义线程池及实现异步调用

多线程一直是工作或面试过程中的高频知识点,今天给大家分享一下使用 ThreadPoolTaskExecutor 来自定义线程池和实现异步调用多线程。 一、ThreadPoolTaskExecutor 本文采用 Executors 的工厂...

CREATE_17
今天
5
0
CSS盒子模型

CSS盒子模型 组成: content --> padding --> border --> margin 像现实生活中的快递: 物品 --> 填充物 --> 包装盒 --> 盒子与盒子之间的间距 content :width、height组成的 内容区域 padd......

studywin
今天
7
0
修复Win10下开始菜单、设置等系统软件无法打开的问题

因为各种各样的原因导致系统文件丢失、损坏、被修改,而造成win10的开始菜单、设置等系统软件无法打开的情况,可以尝试如下方法解决 此方法只在部分情况下有效,但值得一试 用Windows键+R打开...

locbytes
昨天
8
0
jquery 添加和删除节点

本文转载于:专业的前端网站➺jquery 添加和删除节点 // 增加一个三和一节点function addPanel() { // var newPanel = $('.my-panel').clone(true) var newPanel = $(".triple-panel-con......

前端老手
昨天
8
0
一、Django基础

一、web框架分类和wsgiref模块使用介绍 web框架的本质 socket服务端 与 浏览器的通信 socket服务端功能划分: 负责与浏览器收发消息(socket通信) --> wsgiref/uWsgi/gunicorn... 根据用户访问...

ZeroBit
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部