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适配器模式介绍
Aug 14 PHP
php添加文章时生成静态HTML文章的实现代码
Feb 17 PHP
php实现可以设置中奖概率的抽奖程序代码分享
Jan 19 PHP
强制PHP命令行脚本单进程运行的方法
Apr 15 PHP
PHP获得数组交集与差集的方法
Jun 10 PHP
CodeIgniter 完美解决URL含有中文字符串
May 13 PHP
jquery+thinkphp实现跨域抓取数据的方法
Oct 15 PHP
老生常谈PHP面向对象之注册表模式
May 26 PHP
Laravel框架模板加载,分配变量及简单路由功能示例
Jun 11 PHP
Laravel中10个有用的用法小结
May 06 PHP
ThinkPHP框架结合Ajax实现用户名校验功能示例
Jul 03 PHP
PHP字符串和十六进制如何实现互相转换
Jul 16 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
德生PL330测评
2021/03/02 无线电
php结合表单实现一些简单功能的例子
2011/06/04 PHP
php跨域cookie共享使用方法
2014/02/20 PHP
宝塔面板在NGINX环境中TP5.1如何运行?
2021/03/09 PHP
Add a Formatted Table to a Word Document
2007/06/15 Javascript
再谈querySelector和querySelectorAll的区别与联系
2012/04/20 Javascript
自定义jQuery选项卡插件实例
2013/03/27 Javascript
node.js中的fs.existsSync方法使用说明
2014/12/17 Javascript
Javascript对象Clone实例分析
2015/06/09 Javascript
javascript运动效果实例总结(放大缩小、滑动淡入、滚动)
2016/01/08 Javascript
基于JavaScript实现点击页面任何位置返回
2016/08/31 Javascript
原生ajax处理json格式数据的实例代码
2016/12/25 Javascript
利用Jasmine对Angular进行单元测试的方法详解
2017/06/12 Javascript
element-ui 表格实现单元格可编辑的示例
2018/02/26 Javascript
简单了解Javscript中兄弟ifream的方法调用
2019/06/17 Javascript
vue基于v-charts封装双向条形图的实现代码
2019/12/09 Javascript
vue基础知识--axios合并请求和slot
2020/06/04 Javascript
Map与WeakMap类型在JavaScript中的使用详解
2020/11/18 Javascript
Python设计模式之代理模式实例
2014/04/26 Python
用python + hadoop streaming 分布式编程(一) -- 原理介绍,样例程序与本地调试
2014/07/14 Python
在Linux下调试Python代码的各种方法
2015/04/17 Python
浅谈Matplotlib简介和pyplot的简单使用——文本标注和箭头
2018/01/09 Python
eclipse创建python项目步骤详解
2019/05/10 Python
selenium处理元素定位点击无效问题
2019/06/12 Python
Python实现图片批量加入水印代码实例
2019/11/30 Python
荷兰鞋子在线:Nelson Schoenen
2017/12/25 全球购物
Kingsoft金山公司C/C++笔试题
2016/05/10 面试题
竞选演讲稿范文
2013/12/28 职场文书
企事业单位求职者的自我评价
2013/12/28 职场文书
运动会广播稿500字
2014/01/28 职场文书
鉴定评语大全
2014/05/05 职场文书
预备党员综合考察材料
2014/05/31 职场文书
酒店总经理岗位职责范本
2014/08/08 职场文书
经理岗位职责
2015/02/02 职场文书
在职证明书模板
2015/06/15 职场文书
MySQL数据库如何使用Shell进行连接
2022/04/12 MySQL