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读取html并截取字符串的简单代码
Nov 30 PHP
PHP 中文处理技巧
Apr 25 PHP
PHP函数篇之掌握ord()与chr()函数应用
Dec 05 PHP
利用PHP+JS实现搜索自动提示(实例)
Jun 09 PHP
PHP快速按行读取CSV大文件的封装类分享(也适用于其它超大文本文件)
Apr 10 PHP
php 批量添加多行文本框textarea一行一个
Jun 03 PHP
PHP实现发送邮件的方法(基于简单邮件发送类)
Dec 17 PHP
PHP常见错误提示含义解释(实用!值得收藏)
Apr 25 PHP
PHP在线调试执行的实现方法(附demo源码)
Apr 28 PHP
PHP内存缓存功能memcached示例
Oct 19 PHP
PHP高效获取远程图片尺寸和大小的实现方法
Oct 20 PHP
PHP设计模式(五)适配器模式Adapter实例详解【结构型】
May 02 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将数据库导出成excel的方法
2010/05/07 PHP
php学习笔记之面向对象
2014/11/08 PHP
详解php中serialize()和unserialize()函数
2017/07/08 PHP
php 策略模式原理与应用深入理解
2019/09/25 PHP
讲两件事:1.this指针的用法小探. 2.ie的attachEvent和firefox的addEventListener在事件处理上的区别
2007/04/12 Javascript
jQuery中nextAll()方法用法实例
2015/01/07 Javascript
jQuery实现导航滚动到指定内容效果完整实例【附demo源码下载】
2016/09/20 Javascript
JQuery获取鼠标进入和离开容器的方向
2016/12/29 Javascript
ES6中箭头函数的定义与调用方式详解
2017/06/02 Javascript
基于angular实现模拟微信小程序swiper组件
2017/06/11 Javascript
微信小程序实现顶部普通选项卡效果(非swiper)
2020/06/19 Javascript
vue.js使用代理和使用Nginx来解决跨域的问题
2018/02/03 Javascript
在vue使用clipboard.js进行一键复制文本的实现示例
2019/01/15 Javascript
elementUI select组件value值注意事项详解
2019/05/29 Javascript
基于Vue的商品主图放大镜方案详解
2019/09/19 Javascript
Javascript如何实现双指控制图片功能
2020/02/25 Javascript
一文秒懂JavaScript构造函数、实例、原型对象以及原型链
2020/08/25 Javascript
手把手教你实现 Promise的使用方法
2020/09/02 Javascript
[01:03:59]2018DOTA2亚洲邀请赛3月30日 小组赛B组VGJ.T VS Secret
2018/03/31 DOTA
python实现彩票系统
2020/06/28 Python
Python实现的登录验证系统完整案例【基于搭建的MVC框架】
2019/04/12 Python
python根据文本生成词云图代码实例
2019/11/15 Python
Tensorflow 多线程设置方式
2020/02/06 Python
Python终端输出彩色字符方法详解
2020/02/11 Python
css sprite简单实例
2016/05/23 HTML / CSS
韩国演唱会订票网站:StubHub韩国
2019/01/17 全球购物
Dr. Martens马汀博士法国官网:马丁靴鼻祖
2020/01/15 全球购物
毕业典礼主持词大全
2014/03/26 职场文书
蛋糕店创业计划书范文
2014/09/21 职场文书
民事诉讼代理授权委托书范本
2014/10/08 职场文书
2014年药房工作总结
2014/11/22 职场文书
先进个人事迹材料
2014/12/29 职场文书
长江七号观后感
2015/06/11 职场文书
植树节新闻稿
2015/07/17 职场文书
python实现语音常用度量方法的代码详解
2021/05/25 Python
python开发制作好看的时钟效果
2022/05/02 Python