php源码之计算两个文件的相对路径
<?php
//计算出两个文件的相对路径即path2相对于$path1的相对路径
// http://www.manongjc.com/article/1342.html
function get_relative_path($path1,$path2){
$arr1 = explode(DIRECTORY_SEPARATOR,dirname($path1));
$arr2 = explode(DIRECTORY_SEPARATOR,dirname($path2));
$length = count($arr2);
for($i = 0; $i < $length; $i++){
if($arr1[$i] != $arr2[$i]){ //进行路径匹配
break;
}
}
if($i == 0){ //根目录不同
return '不在同一个目录中';
}else if($i != 0 && $i < $length){ //在同一个个目录下
$separator = array_fill(0, ($length-$i), '..');
return(implode(DIRECTORY_SEPARATOR, array_merge($separator, array_slice($arr1, $i))));
}else if($i == $length){ //路径完全相同 http://www.manongjc.com/article/1343.html
return '.';
}
}
$path1 = 'F:\Apache\www\temp\php_demo\demo.md'; //参照路径path1
$path2 = 'F:\Apache\www\temp\php_demo\demo.md';
$path3 = 'F:\Apache\www\temp\sd\ss.d\sdsfd';
$path4 = 'G:\FFOutput';
var_dump(get_relative_path($path1,$path2));
var_dump(get_relative_path($path1,$path3));
var_dump(get_relative_path($path1,$path4));
?>
php源码之计算两个文件的相对路径的更多相关文章
- php 计算两个文件的相对路径
<?php /** * 计算两个文件的相对路径 */ function relative_path($path1, $path2) { $arr1 = explode('/', dirname( ...
- PHP两个文件的相对路径
/** * relativePath 计算两个文件的相对路径 * @param file1 参作为考路径 * @param file2 相对于$file1的路径 */ function relativ ...
- angular源码分析:injector.js文件分析——angular中的依赖注入式如何实现的(续)
昨天晚上写完angular源码分析:angular中jqLite的实现--你可以丢掉jQuery了,给今天定了一个题angular源码分析:injector.js文件,以及angular的加载流程,但 ...
- [2013.7.5新鲜出炉] Ubuntu12.04下载Android4.0.1源码全过程----------------折腾两天,终于下好,附若干问题解决
本文转至 http://blog.csdn.net/yanzi1225627/article/details/9255457 下载源码这一步折腾了我整整两天,期间遇到很多问题,哎,记录于此,希望日后再 ...
- C#计算两个文件的相对目录算法
C#计算两个文件的相对目录算法 楼主大菜鸟一只,第一次写技术博客,如果有概念错误或代码不规范的地方,还请各位多多批评指正.话不多说,来看题: 前一阵子开发了一个用户控件,里面调用了很多css,js等资 ...
- Python3.4 获取百度网页源码并保存在本地文件中
最近学习python 版本 3.4 抓取网页源码并且保存在本地文件中 import urllib.request url='http://www.baidu.com' #上面的url一定要写明确,如果 ...
- Jav获取文件的MD5码,比较两个文件内容是否相同
Jav获取文件的MD5码,比较两个文件内容是否相同 代码: System.out.println(DigestUtils.md5Hex(new FileInputStream(new File(&qu ...
- Spark源码剖析 - 计算引擎
本章导读 RDD作为Spark对各种数据计算模型的统一抽象,被用于迭代计算过程以及任务输出结果的缓存读写.在所有MapReduce框架中,shuffle是连接map任务和reduce任务的桥梁.map ...
- CI框架源码阅读笔记4 引导文件CodeIgniter.php
到了这里,终于进入CI框架的核心了.既然是“引导”文件,那么就是对用户的请求.参数等做相应的导向,让用户请求和数据流按照正确的线路各就各位.例如,用户的请求url: http://you.host.c ...
随机推荐
- 跑马灯标记marquee
常见属性: direction:滚动方向(left默)/right/up/down; behavior:滚动方式(scroll默)/slide/alternate来回弹动: width.height. ...
- Python的平凡之路(5)
一.模块介绍 定义: 模块--用来从逻辑上组织python代码(变量,函数,类,逻辑:实现一个功能),本质就是.py结尾的python文件(文件名test.py,模块名test) 包—用来从逻辑上组织 ...
- 《C++primer》v5 第3章 字符串、向量和数组 读书笔记 习题答案
本章问题 1.char *p="hello world";与char p[]="hello world"的问题. 简单说前者是一个指向字符串常量的指针,后者是一 ...
- RedHad中yum安装与使用
yum的安装对于linux来说,是一个福音,至少安装软件来说,非常非常方便,以前使用rpm安装,那个各种依赖,哎,说多了都是泪,现在有这个yum就方便多了. 此处记录redhad的安装.其实我也是借鉴 ...
- 【LeetCode OJ】Path Sum
Problem Link: http://oj.leetcode.com/problems/path-sum/ One solution is to BFS the tree from the roo ...
- 如何使用git 跟进项目进程
首先,git能够记录版本信息,方便大家在任何时刻能够取回之前的项目版本,其次可以记录分支信息,方便进行分支作业. Step1:cd到你的项目根目录下,从团队github 项目clone到本地. 命令如 ...
- Word或者Excel中怎么把 "空格" 替换成 "换行 "
word中ctrl+h打开替换,将" "替换为^pexcel替换成alt+小键盘区的10
- Python::OS 模块 -- 进程参数
os模块的简介请参看 Python::OS 模块 -- 简介 os模块的文件和目录操作 Python::OS 模块 -- 文件和目录操作 os模块的进程管理 Python::OS 模块 -- 进程管理 ...
- JAVA中精确计算金额BigDecimal
package com.chauvet.utils; import java.math.BigDecimal; import java.text.DecimalFormat; import java. ...
- yii去除index.php的入口脚本显示为seo友好的url
1.去除入口脚本需要在重写url,如果你的webserver软件时Apache的话,必须配置httpd.conf,搜索“LoadModule rewrite_module modules/mod_re ...