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 相关文章推荐
用Flash图形化数据(一)
Oct 09 PHP
Blitz templates 最快的PHP模板引擎
Apr 06 PHP
基于PHP输出缓存(output_buffering)的深入理解
Jun 13 PHP
php接口和抽象类使用示例详解
Mar 02 PHP
php实现短信发送代码
Jul 05 PHP
PHP简单创建压缩图的方法
Aug 24 PHP
PHP在弹框中获取foreach中遍历的id值并传递给地址栏
Jun 13 PHP
Laravel使用消息队列需要注意的一些问题
Dec 13 PHP
浅谈PHP中pack、unpack的详细用法
Mar 12 PHP
php实现微信原生支付(扫码支付)功能
May 30 PHP
PHP命名空间namespace及use的简单用法分析
Aug 03 PHP
thinkphp5+layui实现的分页样式示例
Oct 08 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 3行代码的分页算法(求起始页和结束页)
2009/10/21 PHP
解析PHP中如何将数组变量写入文件
2013/06/06 PHP
PHP htmlspecialchars_decode()函数用法讲解
2019/03/01 PHP
js验证整数加保留小数点的简单实例
2013/12/02 Javascript
纯JS实现动态时间显示代码
2014/02/08 Javascript
jquery中的ajax方法怎样通过JSONP进行远程调用
2014/05/04 Javascript
浅析jQuery移动开发中内联按钮和分组按钮的编写
2015/12/04 Javascript
javascript 数组的正态分布排序的问题
2016/07/31 Javascript
Google 地图叠加层实例讲解
2016/08/06 Javascript
NODE.JS跨域问题的完美解决方案
2016/10/20 Javascript
DataTables+BootStrap组合使用Ajax来获取数据并且动态加载dom的方法(排序,过滤,分页等)
2016/11/09 Javascript
详解获取jq ul第一个li定位的四种解决方案
2016/11/23 Javascript
BootstrapTable请求数据时设置超时(timeout)的方法
2017/01/22 Javascript
从零开始学习Node.js系列教程四:多页面实现数学运算的client端和server端示例
2017/04/13 Javascript
利用vscode调试编译后的js代码详解
2018/05/14 Javascript
详解基于vue的服务端渲染框架NUXT
2018/06/20 Javascript
layui实现给某一列加点击事件
2019/10/26 Javascript
Python爬虫爬取美剧网站的实现代码
2016/09/03 Python
python将字典内容存入mysql实例代码
2018/01/18 Python
python 实现在txt指定行追加文本的方法
2018/04/29 Python
对Python3中的print函数以及与python2的对比分析
2018/05/02 Python
PyQt5实现暗黑风格的计时器
2019/07/29 Python
基于Python实现拆分和合并GIF动态图
2019/10/22 Python
python单向循环链表原理与实现方法示例
2019/12/03 Python
Python绘制三角函数图(sin\cos\tan)并标注特定范围的例子
2019/12/04 Python
Flask中endpoint的理解(小结)
2019/12/11 Python
python爬虫开发之使用python爬虫库requests,urllib与今日头条搜索功能爬取搜索内容实例
2020/03/10 Python
浅谈如何使用python抓取网页中的动态数据实现
2020/08/17 Python
在购买印度民族服饰:Soch
2020/09/15 全球购物
市场营销专科应届生求职信
2013/11/24 职场文书
30年同学聚会感言
2014/01/30 职场文书
十佳护士获奖感言
2014/02/18 职场文书
商务日语专业的自荐信
2014/05/23 职场文书
硕士毕业论文导师评语
2014/12/31 职场文书
2015年高二班主任工作总结
2015/05/25 职场文书
在windows server 2012 r2中安装mysql的详细步骤
2022/07/23 Servers