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和XSS跨站攻击的防范
Apr 17 PHP
php中显示数组与对象的实现代码
Apr 18 PHP
PHP中空字符串介绍0、null、empty和false之间的关系
Sep 25 PHP
获取PHP警告错误信息的解决方法
Jun 03 PHP
利用php绘制饼状图的实现代码
Jun 07 PHP
php实现查看邮件是否已被阅读的方法
Dec 03 PHP
php轻松实现中英文混排字符串截取
May 28 PHP
php使用fsockopen函数发送post,get请求获取网页内容的方法
Nov 15 PHP
php封装好的人民币数值转中文大写类
Dec 20 PHP
PHP将英文数字转换为阿拉伯数字实例讲解
Jan 28 PHP
laravel实现前后台路由分离的方法
Oct 13 PHP
Laravel 框架返回状态拦截代码
Oct 18 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
ninety plus是什么?ninety plus咖啡好吗?
2021/03/04 新手入门
海河写的 Discuz论坛帖子调用js的php代码
2007/08/23 PHP
将PHP程序中返回的JSON格式数据用gzip压缩输出的方法
2016/03/03 PHP
最新最全PHP生成制作验证码代码详解(推荐)
2016/06/12 PHP
简单的pgsql pdo php操作类实现代码
2016/08/25 PHP
PHP数组去重的更快实现方式分析
2018/05/09 PHP
TP(thinkPHP)框架多层控制器和多级控制器的使用示例
2018/06/13 PHP
网站上面有这种切换效果
2006/06/26 Javascript
javascript dom 操作详解 js加强
2009/07/13 Javascript
在IE和VB中支持png图片透明效果的实现方法(vb源码打包)
2011/04/01 Javascript
可兼容IE的获取及设置cookie的jquery.cookie函数方法
2013/09/02 Javascript
jQuery实现的Div窗口震动效果实例
2015/08/07 Javascript
基于JavaScript短信验证码如何实现
2016/01/24 Javascript
javascript的document中的动态添加标签实现方法
2016/10/24 Javascript
Bootstrap栅格系统简单实现代码
2017/03/06 Javascript
jQuery事件多次绑定与解绑问题实例分析
2019/02/19 jQuery
详解vue项目中调用百度地图API使用方法
2019/04/25 Javascript
layUI使用layer.open,在content打开数据表格,获取值并返回的方法
2019/09/26 Javascript
[02:22]2018DOTA2亚洲邀请赛VG赛前采访
2018/04/03 DOTA
python实时分析日志的一个小脚本分享
2017/05/07 Python
详解css3 Transition属性(平滑过渡菜单栏案例)
2017/09/05 HTML / CSS
html5时钟实现代码
2010/10/22 HTML / CSS
销售类个人求职信范文
2013/09/25 职场文书
高校毕业生登记表自我鉴定
2013/11/03 职场文书
单位在职证明范本
2014/01/09 职场文书
新闻编辑专业毕业自荐书范文
2014/02/05 职场文书
八年级语文教学反思
2014/02/11 职场文书
自行车广告词大全
2014/03/21 职场文书
中国梦演讲稿教师篇
2014/04/23 职场文书
社会稳定风险评估方案
2014/06/02 职场文书
二人合伙经营协议书
2014/09/13 职场文书
幼儿园六一主持词
2015/06/30 职场文书
严以修身专题学习研讨会发言材料
2015/11/09 职场文书
python入门之算法学习
2021/04/22 Python
vue-treeselect的基本用法以及解决点击无法出现拉下菜单
2022/04/30 Vue.js
GO中sync包自由控制并发示例详解
2022/08/05 Golang