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 无法加载mcrypt.dll的解决办法
Apr 03 PHP
coreseek 搜索英文的问题详解
Jun 08 PHP
浅析使用Turck-mmcache编译来加速、优化PHP代码
Jun 20 PHP
PHP CURL CURLOPT参数说明(curl_setopt)
Sep 30 PHP
一个显示效果非常不错的PHP错误、异常处理类
Mar 21 PHP
PHP中单引号与双引号的区别分析
Aug 19 PHP
网站防止被刷票的一些思路与方法
Jan 08 PHP
PHP获取二维数组中某一列的值集合
Dec 25 PHP
PHP中的表达式简述
May 29 PHP
PHP处理二进制数据的实现方法
Jun 13 PHP
php+jQuery递归调用POST循环请求示例
Oct 14 PHP
基于Laravel 5.2 regex验证的正确写法
Sep 29 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实现通用的从数据库表读取数据到数组的函数实例
2015/03/21 PHP
WordPress中邮件的一些修改和自定义技巧
2015/12/15 PHP
PHP简单字符串过滤方法示例
2016/09/04 PHP
Bootstrap+PHP实现多图上传功能实例详解
2018/04/08 PHP
Thinkphp页面跳转设置跳转等待时间的操作
2019/10/16 PHP
破解Session cookie的方法
2006/07/28 Javascript
cssQuery()的下载与使用方法
2007/01/12 Javascript
不用ajax实现点击文字即可编辑的方法
2007/12/16 Javascript
jQuery新的事件绑定机制on()示例应用
2014/07/18 Javascript
JavaScript函数详解
2015/02/27 Javascript
jQuery+AJAX实现遮罩层登录验证界面(附源码)
2020/09/13 Javascript
AngularJS ng-mousedown 指令
2016/08/02 Javascript
Highcharts学习之数据列
2016/08/03 Javascript
Bootstrap表单简单实现代码
2017/03/06 Javascript
JavaScript中附件预览功能实现详解(推荐)
2017/08/15 Javascript
Angular移动端页面input无法输入的解决方法
2017/11/14 Javascript
JavaScript 九种跨域方式实现原理
2019/02/11 Javascript
Jquery实现获取子元素的方法分析
2019/08/24 jQuery
vue基于v-charts封装双向条形图的实现代码
2019/12/09 Javascript
Vue实现兄弟组件间的联动效果
2020/01/21 Javascript
Python实现按特定格式对文件进行读写的方法示例
2017/11/30 Python
python使用tornado实现简单爬虫
2018/07/28 Python
python中pip的使用和修改下载源的方法
2019/07/08 Python
Tensorflow实现多GPU并行方式
2020/02/03 Python
浅谈Python中的异常和JSON读写数据的实现
2020/02/27 Python
英国领先的男士服装和时尚零售商:Burton
2017/01/09 全球购物
Belvilla法国:休闲度假房屋出租
2020/10/03 全球购物
JDO的含义
2012/11/17 面试题
一套中级Java程序员笔试题
2015/01/14 面试题
大学生水文观测实习自我鉴定
2013/09/29 职场文书
工程造价与管理专业应届生求职信
2013/11/23 职场文书
学历公证书范本
2014/04/09 职场文书
完美的中文自荐信
2014/05/24 职场文书
三八节祝酒词
2015/08/11 职场文书
浅析Python中的套接字编程
2021/06/22 Python
oracle连接ODBC sqlserver数据源的详细步骤
2021/07/25 Oracle