<?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);

  

如果本文章已帮助到您!

最新文章

  1. Vector Tile
  2. 关于16年2月14日以后上传AppStore出现:Missing iOS Distribution signing identity for...的问题
  3. codeforce好地方啊 Bear and Elections *
  4. 自定义JSTL标签和函数库
  5. AbsListView.OnScrollListener
  6. Statspack安装配置及使用
  7. 读流testDemo
  8. MSDN(电驴)
  9. java-分页之页面分页
  10. 一个IO的传奇一生 系列 存储之道
  11. calltree查看工程代码中的函数调用关系
  12. Cocos2d-x 3.1.1 Lua演示样例 ActionEaseTest(动作)
  13. java的深复制与浅复制
  14. 人类科技的发展为什么会是加速度的(TRIZ方法再推荐)
  15. Windows 8.1下 MySQL绿色版安装配置与使用
  16. TeamView 无法捕捉画面问题的解决办法
  17. urls 管理
  18. EF设计模式之code first
  19. JDBC连接数据库:单线程、多线程、批处理插入数据的对比
  20. 关于jvm钩子 Runtime.getRuntime().addShutdownHook

热门文章

  1. idea 安装findBugs 和 checkStyle
  2. Porting QML Applications to Qt 5
  3. Oracle案例01——ORA-09925: Unable to create audit trail file
  4. Linux-&gt;apt-包的位置和变更
  5. 加密算法IV的作用
  6. 一个典型的后台软件系统的设计复盘——(二)如何id一个事物
  7. UID卡修改&amp;UID锁死修复
  8. Vue组件绑定自定义事件
  9. Java中类继承、接口实现的一些要注意的细节问题
  10. oracle数据库恢复归档脚本