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中在数据库中保存Checkbox数据(1)
Oct 09 PHP
php模板之Phpbean的目录结构
Jan 10 PHP
如何在symfony中导出为CSV文件中的数据
Oct 06 PHP
php长字符串定义方法
Jul 12 PHP
php5.2 Json不能正确处理中文、GB编码的解决方法
Mar 28 PHP
PHP生成二维码的两个方法和实例
Jul 01 PHP
PHP查找与搜索数组元素方法总结
Jun 12 PHP
php图片添加文字水印实现代码
Mar 15 PHP
Thinkphp3.2.3整合phpqrcode生成带logo的二维码
Jul 21 PHP
php图像处理函数imagecopyresampled用法详解
Dec 02 PHP
PHP基于面向对象封装的分页类示例
Mar 15 PHP
laravel通过a标签从视图向控制器实现传值
Oct 15 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并发对MYSQL造成压力的解决方法
2013/02/21 PHP
php代码检查代理ip的有效性
2016/08/19 PHP
PHP针对多用户实现更换头像功能
2016/09/04 PHP
PHP迭代与递归实现无限级分类
2017/08/28 PHP
php实现微信支付之企业付款
2018/05/30 PHP
PHP从尾到头打印链表实例讲解
2018/09/27 PHP
PHP正则之正向预查与反向预查讲解与实例
2020/04/06 PHP
PHP 实现 JSON 数据的编码和解码操作详解
2020/04/22 PHP
jQuery 瀑布流 绝对定位布局(二)(延迟AJAX加载图片)
2012/05/23 Javascript
js禁止页面刷新禁止用F5键刷新禁止右键的示例代码
2013/09/23 Javascript
原生JS和JQuery动态添加、删除表格行的方法
2015/05/28 Javascript
Jquery Ajax Error 调试错误的技巧
2015/11/20 Javascript
JavaScript与HTML的结合方法详解
2015/11/23 Javascript
JavaScript和jQuery获取input框的绝对位置实现方法
2016/10/13 Javascript
jQuery常见的选择器及用法介绍
2016/12/20 Javascript
javascript中json基础知识详解
2017/01/19 Javascript
three.js绘制地球、飞机与轨迹的效果示例
2017/02/28 Javascript
简述jQuery Easyui一些用法
2017/08/01 jQuery
BootStrap中Table隐藏后显示问题的实现代码
2017/08/31 Javascript
React组件重构之嵌套+继承及高阶组件详解
2018/07/19 Javascript
微信小程序url传参写变量的方法
2018/08/09 Javascript
JS实现点击发送验证码 xx秒后重新发送功能
2019/07/30 Javascript
跟老齐学Python之折腾一下目录
2014/10/24 Python
Python urls.py的三种配置写法实例详解
2017/04/28 Python
在PyCharm下使用 ipython 交互式编程的方法
2019/01/17 Python
python django 原生sql 获取数据的例子
2019/08/14 Python
Python3 pandas 操作列表实例详解
2019/09/23 Python
用Python进行websocket接口测试
2020/10/16 Python
python3列表删除大量重复元素remove()方法的问题详解
2021/01/04 Python
PHP开发工程师面试问题集锦
2012/11/01 面试题
医生进修自我鉴定
2014/01/19 职场文书
投资合作协议书
2014/04/17 职场文书
投标保密承诺书
2014/05/19 职场文书
部门2014年度工作总结
2014/11/12 职场文书
中学生社区服务活动报告
2015/02/05 职场文书
解决Swagger2返回map复杂结构不能解析的问题
2021/07/02 Java/Android