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 相关文章推荐
详解:――如何将图片储存在数据库里
Dec 05 PHP
php下删除一篇文章生成的多个静态页面
Aug 08 PHP
学习php笔记 字符串处理
Oct 19 PHP
javascript,php获取函数参数对象的代码
Feb 03 PHP
win2003服务器使用WPS的COM组件的一些问题解决方法
Jan 11 PHP
用php随机生成福彩双色球号码的2种方法
Feb 04 PHP
php用正则表达式匹配中文实例详解
Nov 06 PHP
php中限制ip段访问、禁止ip提交表单的代码分享
Aug 22 PHP
CodeIgniter实现从网站抓取图片并自动下载到文件夹里的方法
Jun 17 PHP
php使用escapeshellarg时中文被过滤的解决方法
Jul 10 PHP
用Laravel Sms实现laravel短信验证码的发送的实现
Nov 29 PHP
Laravel5.3+框架定义API路径取消CSRF保护方法详解
Apr 06 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
咖啡知识大全
2021/03/03 新手入门
3种方法轻松处理php开发中emoji表情的问题
2016/07/18 PHP
基于yaf框架和uploadify插件,做的一个导入excel文件,查看并保存数据的功能
2017/01/24 PHP
PHP7如何开启Opcode打造强悍性能详解
2018/05/11 PHP
载入进度条 效果
2006/07/08 Javascript
IE6中使用position导致页面变形的解决方案(js代码)
2011/01/09 Javascript
JavaScript判断变量是否为undefined的两种写法区别
2013/12/04 Javascript
14个有用的Jquery技巧分享
2015/01/08 Javascript
JS函数this的用法实例分析
2015/02/05 Javascript
Bootstrap CSS布局之图像
2016/12/17 Javascript
Javascript网页抢红包外挂实现分享
2018/01/11 Javascript
微信小程序身份证验证方法实现详解
2019/06/28 Javascript
Vue项目中使用WebUploader实现文件上传的方法
2019/07/21 Javascript
layui 富文本图片上传接口与普通按钮 文件上传接口的例子
2019/09/23 Javascript
Vue移动端实现图片上传及超过1M压缩上传
2019/12/23 Javascript
JS原形与原型链深入详解
2020/05/09 Javascript
ant-design-vue按需加载的坑的解决
2020/05/14 Javascript
vue实现从外部修改组件内部的变量的值
2020/07/30 Javascript
如何利用vue实现波谱拟合详解
2020/11/05 Javascript
使用简单工厂模式来进行Python的设计模式编程
2016/03/01 Python
Python抓取聚划算商品分析页面获取商品信息并以XML格式保存到本地
2018/02/23 Python
30秒轻松实现TensorFlow物体检测
2018/03/14 Python
PyQT实现菜单中的复制,全选和清空的功能的方法
2019/06/17 Python
Python collections模块使用方法详解
2019/08/28 Python
python 删除excel表格重复行,数据预处理操作
2020/07/06 Python
celery在python爬虫中定时操作实例讲解
2020/11/27 Python
python中yield的用法详解
2021/01/13 Python
应届生程序员求职信
2013/11/05 职场文书
交警个人先进事迹材料
2014/05/11 职场文书
服装设计专业自荐信
2014/06/17 职场文书
无犯罪记录证明范本
2014/09/15 职场文书
元旦标语大全
2014/10/09 职场文书
员工自我评价范文
2015/03/11 职场文书
2019求职信大礼包
2019/05/15 职场文书
Django项目如何正确配置日志(logging)
2021/04/29 Python
mysql连接查询中and与where的区别浅析
2021/07/01 MySQL