php计算两个文件相对路径的方法


Posted in PHP onMarch 14, 2015

本文实例讲述了php计算两个文件相对路径的方法。分享给大家供大家参考。具体如下:

一、问题:

写一个php函数算出两个文件的相对路径。例如$a="/a/b/c/d/e.php"; $b="/a/b/12/34/c.php",B相对于A的相对路径是什么?

二、解决方法:

<?php
/**
 * 求$b相对于$a的相对路径
 * @param string $a
 * @param string $b
 * @return string
 */
function getRelativePath ($a, $b)
{
  $patha = explode('/', $a);
  $pathb = explode('/', $b);
  $counta = count($patha) - 1;
  $countb = count($pathb) - 1;
  $path = "../";
  if ($countb > $counta) {
    while ($countb > $counta) {
      $path .= "../";
      $countb --;
    }
  }
  // 寻找第一个公共结点
  for ($i = $countb - 1; $i >= 0;) {
    if ($patha[$i] != $pathb[$i]) {
      $path .= "../";
      $i --;
    } else {
//判断是否为真正的第一个公共结点,防止出现子目录重名情况
      for ($j = $i - 1, $flag = 1; $j >= 0; $j --) {
        if ($patha[$j] == $pathb[$j]) {
          continue;
        } else {
          $flag = 0;
          break;
        }
      }
      if ($flag)
        break;
      else
        $i ++;
    }
  }
  for ($i += 1; $i <= $counta; $i ++) {
    $path .= $patha[$i] . "/";
  }
  return $path;
}
$a = "/a/c/d/e.php";
$b = "/a/c.php";
$path = getRelativePath($a, $b);
echo $path;

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
自动把纯文本转换成Web页面的php代码
Aug 27 PHP
PHP性能优化工具篇Benchmark类调试执行时间
Dec 06 PHP
PHP 文件系统详解
Sep 13 PHP
win7计划任务定时执行PHP脚本设置图解
May 09 PHP
php结合ACCESS的跨库查询功能
Jun 12 PHP
PHP实现自动识别原编码并对字符串进行编码转换的方法
Jul 13 PHP
在Thinkphp中使用ajax实现无刷新分页的方法
Oct 25 PHP
php源码之将图片转化为data/base64数据流实例详解
Nov 27 PHP
Redis构建分布式锁
Mar 28 PHP
PHP编程实现微信企业向用户付款的方法示例
Jul 26 PHP
PHP实现的登录页面信息提示功能示例
Jul 24 PHP
laravel框架实现后台登录、退出功能示例
Oct 31 PHP
php计算两个日期相差天数的方法
Mar 14 #PHP
php压缩和解压缩字符串的方法
Mar 14 #PHP
php单例模式实现方法分析
Mar 14 #PHP
php写入数据到CSV文件的方法
Mar 14 #PHP
php从数组中随机选择若干不重复元素的方法
Mar 14 #PHP
php利用反射实现插件机制的方法
Mar 14 #PHP
php检测apache mod_rewrite模块是否安装的方法
Mar 14 #PHP
You might like
PHP中overload与override的区别
2017/02/13 PHP
PHP实现按之字形顺序打印二叉树的方法
2018/01/16 PHP
firefox浏览器下javascript 拖动层效果与原理分析代码
2007/12/04 Javascript
JavaScript 学习笔记(十二) dom
2010/01/21 Javascript
jcarousellite.js 基于Jquery的图片无缝滚动插件
2010/12/30 Javascript
JS调试必备的5个debug技巧
2014/03/07 Javascript
利用jquery动画特效和css打造的侧边弹出垂直导航
2014/04/04 Javascript
js获取下拉列表的值和元素个数示例
2014/05/07 Javascript
js子页面获取父页面数据示例
2014/05/15 Javascript
JavaScript中string转换成number介绍
2014/12/31 Javascript
介绍JavaScript的一个微型模版
2015/06/24 Javascript
jQuery ajax的功能实现方法详解
2017/01/06 Javascript
nodejs个人博客开发第六步 数据分页
2017/04/12 NodeJs
详解AngularJS2 Http服务
2017/06/26 Javascript
微信小程序实现基于三元运算验证手机号/姓名功能示例
2019/01/19 Javascript
vue拖拽组件 vuedraggable API options实现盒子之间相互拖拽排序
2019/07/08 Javascript
js实现课堂随机点名系统
2019/11/21 Javascript
Python记录详细调用堆栈日志的方法
2015/05/05 Python
django ajax json的实例代码
2018/05/29 Python
浅析PEP572: 海象运算符
2019/10/15 Python
python tornado使用流生成图片的例子
2019/11/18 Python
Python使用docx模块实现刷题功能代码
2020/02/13 Python
Python如何实现大型数组运算(使用NumPy)
2020/07/24 Python
用python查找统一局域网下ip对应的mac地址
2021/01/13 Python
pytorch下的unsqueeze和squeeze的用法说明
2021/02/06 Python
详解如何解决H5开发使用wx.hideMenuItems无效果不生效
2021/01/20 HTML / CSS
世界知名接发和假发品牌:Poze Hair
2017/03/08 全球购物
慕尼黑山地运动、户外服装和体育用品专家:Sporthaus Schuster
2019/08/27 全球购物
成人教育自我鉴定
2013/11/01 职场文书
局火灾防控工作方案
2014/05/25 职场文书
社区工作者个人总结
2015/02/28 职场文书
2015学校图书管理员工作总结
2015/05/11 职场文书
复兴之路纪录片观后感
2015/06/02 职场文书
MySQL 8.0 驱动与阿里druid版本兼容问题解决
2021/07/01 MySQL
gateway与spring-boot-starter-web冲突问题的解决
2021/07/16 Java/Android
Tomcat安装使用及部署Web项目的3种方法汇总
2022/08/14 Servers