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 相关文章推荐
mysql limit查询优化分析
Nov 12 PHP
php 常用类汇总 推荐收藏
May 13 PHP
PHP用SAX解析XML的实现代码与问题分析
Aug 22 PHP
php中防止伪造跨站请求的小招式
Sep 02 PHP
用PHP代码给图片加水印
Jul 01 PHP
php基于双向循环队列实现历史记录的前进后退等功能
Aug 08 PHP
深入理解PHP变量的值类型和引用类型
Oct 21 PHP
大家须知简单的php性能优化注意点
Jan 04 PHP
php采集神器cURL使用方法详解
Feb 19 PHP
php实现贪吃蛇小游戏
Jul 26 PHP
PHP简单实现循环链表功能示例
Nov 10 PHP
关于Laravel参数验证的一些疑与惑
Nov 19 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
Zerg建筑一览
2020/03/14 星际争霸
PHP中for循环语句的几种变型
2007/03/16 PHP
php检测图片木马多进制编程实践
2013/04/11 PHP
浅谈php中的访问修饰符private、protected、public的作用范围
2016/11/20 PHP
phpStorm2020 注册码
2020/09/17 PHP
滚动条变色 隐藏滚动条与双击网页自动滚屏显示代码
2009/12/28 Javascript
jquery.qrcode在线生成二维码使用示例
2013/08/21 Javascript
优化javascript的执行效率一些方法总结
2013/12/25 Javascript
用jQuery toggleClass 实现鼠标移上变色
2014/05/14 Javascript
[将免费进行到底]在Amazon的一年免费服务器上安装Node.JS, NPM和OurJS博客
2014/08/18 Javascript
AngularJS 2.0入门权威指南
2016/10/08 Javascript
vue.js动态数据绑定学习笔记
2017/05/19 Javascript
AngularJS 最常用的八种功能(基础知识)
2017/06/26 Javascript
vue2.0的contextmenu右键弹出菜单的实例代码
2017/07/24 Javascript
jquery鼠标悬停导航下划线滑出效果
2017/09/29 jQuery
解决微信小程序调用moveToLocation失效问题【超简单】
2019/04/12 Javascript
基于Taro的微信小程序模板消息-获取formId功能模块封装实践
2019/07/15 Javascript
关于JS模块化的知识点分享
2019/10/16 Javascript
Python的Bottle框架中获取制定cookie的教程
2015/04/24 Python
在python的类中动态添加属性与生成对象
2016/09/17 Python
Python hashlib模块用法实例分析
2018/06/12 Python
对python条件表达式的四种实现方法小结
2019/01/30 Python
Python cookie的保存与读取、SSL讲解
2020/02/17 Python
input file上传文件样式支持html5的浏览器解决方案
2012/11/14 HTML / CSS
突袭HTML5之Javascript API扩展3—本地存储全新体验
2013/01/31 HTML / CSS
使用html2canvas.js实现页面截图并显示或上传的示例代码
2018/12/18 HTML / CSS
prAna官网:瑜伽、旅行和冒险服装
2019/03/10 全球购物
婚假请假条怎么写
2014/04/10 职场文书
音乐节策划方案
2014/06/09 职场文书
实习护士自荐信
2014/06/21 职场文书
超市优秀员工获奖感言
2014/08/15 职场文书
校长创先争优承诺书
2014/08/30 职场文书
试用期转正后的自我评价
2014/09/21 职场文书
施工现场安全管理制度
2015/08/05 职场文书
Python中seaborn库之countplot的数据可视化使用
2021/06/11 Python
HTML中的表单元素介绍
2022/02/28 HTML / CSS