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执行速度全攻略(下)
Oct 09 PHP
PHP 5.0对象模型深度探索之对象复制
Mar 27 PHP
php下实现在指定目录搜索指定类型文件的函数
Oct 03 PHP
php通过数组实现多条件查询实现方法(字符串分割)
May 06 PHP
单台服务器的PHP进程之间实现共享内存的方法
Jun 13 PHP
ThinkPHP调试模式与日志记录概述
Aug 22 PHP
php文件夹的创建与删除方法
Jan 24 PHP
Smarty高级应用之缓存操作技巧分析
May 14 PHP
Yii2基于Ajax自动获取表单数据的方法
Aug 10 PHP
php断点续传之文件分割合并详解
Dec 13 PHP
PHP数据库操作四:mongodb用法分析
Aug 16 PHP
PHPCrawl爬虫库实现抓取酷狗歌单的方法示例
Dec 21 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
simplehtmldom Doc api帮助文档
2012/03/26 PHP
PHP面向对象之后期静态绑定功能介绍
2015/05/18 PHP
PHP简单实现数字分页功能示例
2016/08/24 PHP
ThinkPHP5框架实现简单的批量查询功能示例
2018/06/07 PHP
完美解决JS中汉字显示乱码问题(已解决)
2006/12/27 Javascript
javascript下function声明一些小结
2007/12/28 Javascript
腾讯UED 漂亮的提示信息效果代码
2011/09/12 Javascript
javascript unicode与GBK2312(中文)编码转换方法
2013/11/14 Javascript
Bootstrap每天必学之弹出框(Popover)插件
2016/04/25 Javascript
javascript简单判断输入内容是否合法的方法
2016/05/11 Javascript
Node.js服务器环境下使用Mock.js拦截AJAX请求的教程
2016/05/23 Javascript
浅谈js中的in-for循环
2016/06/28 Javascript
JS对象创建的几种方式整理
2017/02/28 Javascript
vue.js单页面应用实例的简单实现
2017/04/10 Javascript
浅谈angular.copy() 深拷贝
2017/09/14 Javascript
浅谈FastClick 填坑及源码解析
2018/03/02 Javascript
JavaScript设计模式之单例模式原理与用法实例分析
2018/07/26 Javascript
JavaScript禁止右击保存图片,禁止拖拽图片的实现代码
2020/04/28 Javascript
vue select 获取value和lable操作
2020/08/28 Javascript
[46:44]DOTA2-DPC中国联赛 正赛 Ehome vs PSG.LGD BO3 第二场 3月7日
2021/03/11 DOTA
python实现简单聊天应用 python群聊和点对点均实现
2017/09/14 Python
Python Django2 model 查询介绍(条件、范围、模糊查询)
2020/03/16 Python
PyTorch中torch.tensor与torch.Tensor的区别详解
2020/05/18 Python
python中round函数如何使用
2020/06/19 Python
基于Python3读写INI配置文件过程解析
2020/07/23 Python
英国最大的奢侈品零售网络商城:Flannels
2016/09/16 全球购物
德国知名健康零食网上商店:Seeberger
2017/07/27 全球购物
Aquatalia官网:意大利著名鞋履品牌
2019/09/26 全球购物
如何提高SQL Server的安全性
2016/07/25 面试题
自动化职业生涯规划书范文
2014/01/03 职场文书
研修第一天随笔感言
2014/02/15 职场文书
幼儿园开学寄语
2014/04/03 职场文书
分公司总经理岗位职责
2014/07/30 职场文书
小学生勤俭节约倡议书
2015/04/29 职场文书
详解TS数字分隔符和更严格的类属性检查
2021/05/06 Javascript
Python+SeaTable实现计算两个日期间的工作日天数
2022/07/07 Python