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 相关文章推荐
杏林同学录(五)
Oct 09 PHP
php 向访客和爬虫显示不同的内容
Nov 09 PHP
使用PHP计算两个路径的相对路径
Jun 14 PHP
数组与类使用PHP的可变变量名需要的注意的问题
Jun 20 PHP
学习php过程中的一些注意点的总结
Oct 25 PHP
PHP对文件进行加锁、解锁实例
Jan 23 PHP
PHP实现阳历到农历转换的类实例
Mar 07 PHP
wampserver改变默认网站目录的办法
Aug 05 PHP
php实现图片上传时添加文字和图片水印技巧
Apr 18 PHP
php array_udiff_assoc 计算两个数组的差集实例
Nov 12 PHP
PHP验证码类ValidateCode解析
Jan 07 PHP
php生成word并下载代码实例
Mar 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 移除数组重复元素的一点说明
2008/11/27 PHP
thinkPHP框架中执行原生SQL语句的方法
2017/10/25 PHP
PHP yield关键字功能与用法分析
2019/01/03 PHP
PHP读取XML文件的方法实例总结【DOMDocument及simplexml方法】
2019/09/10 PHP
jQuery Div中加载其他页面的实现代码
2009/02/27 Javascript
JS 实现获取打开一个界面中输入的值
2013/03/19 Javascript
脚本合并提升javascript性能示例
2014/02/24 Javascript
jquery实现的一个简单进度条效果实例
2014/05/12 Javascript
提高jQuery性能优化的技巧
2015/08/03 Javascript
利用Angularjs和原生JS分别实现动态效果的输入框
2016/09/01 Javascript
基于JavaScript实现多级菜单效果
2017/07/25 Javascript
vue 使用ref 让父组件调用子组件的方法
2018/02/08 Javascript
结合Vue控制字符和字节的显示个数的示例
2018/05/17 Javascript
Vue 处理表单input单行文本框的实例代码
2019/05/09 Javascript
Layui实现数据表格中鼠标悬浮图片放大效果,离开时恢复原图的方法
2019/09/11 Javascript
解决layui的radio属性或别的属性没显示出来的问题
2019/09/26 Javascript
vue中echarts图表大小适应窗口大小且不需要刷新案例
2020/07/19 Javascript
解决removeEventListener 无法清除监听的问题
2020/10/30 Javascript
Python读取环境变量的方法和自定义类分享
2014/11/22 Python
Python实现翻转数组功能示例
2018/01/12 Python
python执行CMD指令,并获取返回的方法
2018/12/19 Python
Python语言检测模块langid和langdetect的使用实例
2019/02/19 Python
Pycharm 文件更改目录后,执行路径未更新的解决方法
2019/07/19 Python
python队列原理及实现方法示例
2019/11/27 Python
python自动从arxiv下载paper的示例代码
2020/12/05 Python
KEETSA环保床垫:更好的睡眠,更好的生活!
2016/11/24 全球购物
秘书专业自荐信范文
2013/12/26 职场文书
体育教师求职信
2014/05/24 职场文书
应届生求职信范文
2014/06/30 职场文书
2014年学生会生活部工作总结
2014/11/07 职场文书
2014年设计师工作总结
2014/11/25 职场文书
于丹讲座视频观后感
2015/06/15 职场文书
重温经典:乔布斯在斯坦福大学的毕业演讲(双语)
2019/08/26 职场文书
SQL Server基本使用和简单的CRUD操作
2021/04/05 SQL Server
详解overflow:hidden的作用(溢出隐藏、清除浮动、解决外边距塌陷)
2021/07/01 HTML / CSS
Win11 21h2可以升级22h2吗?看看你的电脑符不符合要求
2022/07/07 数码科技