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 高级课程笔记 面向对象
Jun 21 PHP
PHP 根据IP地址控制访问的代码
Apr 22 PHP
8个必备的PHP功能实例代码
Oct 27 PHP
php中filter函数验证、过滤用户输入的数据
Jan 13 PHP
不使用php api函数实现数组的交换排序示例
Apr 13 PHP
Yii 快速,安全,专业的PHP框架
Sep 03 PHP
php中ftp_chdir与ftp_cdup函数用法
Nov 18 PHP
php+mysqli实现批量执行插入、更新及删除数据的方法
Jan 29 PHP
PHP中SERIALIZE和JSON的序列化与反序列化操作区别分析
Oct 11 PHP
php中strtotime函数性能分析
Nov 20 PHP
gearman管理工具GearmanManager的安装与php使用方法示例
Feb 27 PHP
PHP实现文件上传操作和封装
Mar 04 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+Ajax验证码验证用户登录
2016/07/20 PHP
浅谈Coreseek、Sphinx-for-chinaese、Sphinx+Scws的区别
2016/12/15 PHP
PHP验证码无法显示的原因及解决办法
2017/08/11 PHP
PHP项目多语言配置平台实现过程解析
2020/05/18 PHP
获取css样式表内样式的js函数currentStyle(IE),defaultView(FF)
2011/02/14 Javascript
jQuery中创建实例与原型继承揭秘
2011/12/21 Javascript
Javascript 按位与运算符 (&amp;)使用介绍
2014/02/04 Javascript
js实现类似菜单风格的TAB选项卡效果代码
2015/08/28 Javascript
原生JavaScript实现滚动条效果
2020/03/24 Javascript
使用jquery.qrcode.js生成二维码插件
2016/10/17 Javascript
zTree树形插件异步加载方法详解
2017/06/14 Javascript
详解ES6中的 Set Map 数据结构学习总结
2018/11/06 Javascript
vue 路由子组件created和mounted不起作用的解决方法
2019/11/05 Javascript
如何使用JavaScript实现无缝滚动自动播放轮播图效果
2020/08/20 Javascript
[36:33]2018DOTA2亚洲邀请赛 4.3 突围赛 EG vs Newbee 第二场
2018/04/04 DOTA
python写的一个文本编辑器
2014/01/23 Python
Perl中著名的Schwartzian转换问题解决实现
2015/06/02 Python
Python读取键盘输入的2种方法
2015/06/16 Python
Flask框架使用DBUtils模块连接数据库操作示例
2018/07/20 Python
python 通过类中一个方法获取另一个方法变量的实例
2019/01/22 Python
python matplotlib画图库学习绘制常用的图
2019/03/19 Python
浅谈Python基础—判断和循环
2019/03/22 Python
详解Python 实现 ZeroMQ 的三种基本工作模式
2020/03/24 Python
女士和男士时尚鞋在线购物:Shoespie
2019/02/28 全球购物
Europcar比利时:租车
2019/08/26 全球购物
秋季运动会加油稿200字
2014/01/11 职场文书
最新大学生创业计划书写作攻略
2014/04/02 职场文书
小区物业门卫岗位职责
2014/04/10 职场文书
体育专业求职信
2014/07/16 职场文书
学校安全工作汇报材料
2014/08/16 职场文书
改进作风怎么办发言材料
2014/08/17 职场文书
12.4全国法制宣传日活动总结
2014/11/01 职场文书
培训师岗位职责
2015/02/14 职场文书
2015年业务工作总结范文
2015/04/10 职场文书
广播体操比赛主持词
2015/06/29 职场文书
《英雄联盟》2022日蚀、月蚀皮肤演示 黑潮亚索曝光
2022/04/13 其他游戏