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 相关文章推荐
php 将字符串按大写字母分隔成字符串数组
Apr 30 PHP
php在页面中调用fckeditor编辑器的方法
Jun 10 PHP
PHP中的str_repeat函数在JavaScript中的实现
Sep 16 PHP
YII模块实现绑定二级域名的方法
Jul 09 PHP
php创建、获取cookie及基础要点分析
Jan 26 PHP
php定义参数数量可变的函数用法实例
Mar 16 PHP
thinkphp表单上传文件并将文件路径保存到数据库中
Jul 28 PHP
PHP实现导出excel数据的类库用法示例
Oct 15 PHP
PHP单态模式简单用法示例
Nov 16 PHP
ThinkPHP 模板引擎使用详解
May 07 PHP
php中如何执行linux命令详解
Nov 06 PHP
Laravel (Lumen) 解决JWT-Auth刷新token的问题
Oct 24 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
php5编程中的异常处理详细方法介绍
2008/07/29 PHP
PHP 读取文件内容代码(txt,js等)
2009/12/06 PHP
Win2003+apache+PHP+SqlServer2008 配置生产环境
2014/07/29 PHP
PHP XML和数组互相转换详解
2016/10/26 PHP
php过滤输入操作之htmlentities与htmlspecialchars用法分析
2017/02/17 PHP
一款Jquery 分页插件的改造方法(服务器端分页)
2011/07/11 Javascript
jQuery删除一个元素后淡出效果展示删除过程的方法
2015/03/18 Javascript
AngularJS动态生成div的ID源码解析
2016/08/29 Javascript
详谈JavaScript的闭包及应用
2017/01/17 Javascript
微信小程序实战之轮播图(3)
2017/04/17 Javascript
在使用JSON格式处理数据时应该注意的问题小结
2017/05/20 Javascript
详解Vue 事件修饰符capture 的使用
2017/12/29 Javascript
微信小程序JS加载esmap地图的实例详解
2019/09/04 Javascript
Vue+Vant 图片上传加显示的案例
2020/11/03 Javascript
[01:46]新英雄登场
2019/09/10 DOTA
python中随机函数random用法实例
2015/04/30 Python
Python中for循环和while循环的基本使用方法
2015/08/21 Python
全面解析Python的While循环语句的使用方法
2015/10/13 Python
解决pip install的时候报错timed out的问题
2018/06/12 Python
分析python请求数据
2018/08/19 Python
详解Python字典小结
2018/10/20 Python
python使用matplotlib画柱状图、散点图
2019/03/18 Python
Django自带的加密算法及加密模块详解
2019/12/03 Python
python MD5加密的示例
2020/10/19 Python
最好的商品表达自己:Cafepress
2019/09/04 全球购物
药剂学专业应届生自荐信
2013/09/29 职场文书
小学门卫岗位职责
2013/12/17 职场文书
应届电子商务毕业自荐书范文
2014/02/11 职场文书
小学评语大全
2014/04/22 职场文书
詹天佑教学反思
2014/04/30 职场文书
社区先进事迹材料
2014/05/19 职场文书
单位工作证明书格式
2014/10/04 职场文书
2014年度培训工作总结
2014/11/27 职场文书
金正昆讲礼仪观后感
2015/06/11 职场文书
法人代表资格证明书
2015/06/18 职场文书
聊一聊python常用的编程模块
2021/05/14 Python