使用PHP计算两个路径的相对路径

代码如下:

<html>
     <body>
         <?php
             function relativePath($aPath, $bPath) {
                 $aArr = explode('/', $aPath);    //explode函数用于切分字符串,返回切分后的数组,此处用'/'切分字符串
                 $bArr = explode('/', $bPath);
                 $aDiffToB = array_diff_assoc($aArr, $bArr);    //array_diff_assoc()用于获取A数组与B数组之间元素的差集,Key和Value都不相同视为不同元素,此处返回在A数组中且与B数组不相同的元素
                 $count = count($aDiffToB);

$path = '';
                 for($i = 0; $i < $count - 1; $i++){
                     $path .= '../';
                 }

$path .= implode('/', $aDiffToB);    //implode()用于使用指定字符串连接数组元素,此处返回用'/'连接数组元素后的字符串

return $path;
             }

echo relativePath('/a/b/c/d/a.php', '/a/b/1/2/b.php');
         ?>
     </body>
 </html>

页面输出
. ./. ./c/d/a.php

(0)

相关推荐

  • php zend 相对路径问题

    <?php define ('P_S', PATH_SEPARATOR); define ('ROOT', "../"); set_include_path(ROOT .P_S .'Zend' .P_S .ROOT.get_include_path()); require_once ROOT.'Zend/Loader.php'; Zend_Loader::loadClass('Zend_Db'); Zend_Loader::loadClass('Zend_Config_Ini')

  • php求两个目录的相对路径示例(php获取相对路径)

    求两个目录的相对路径,不限制路径深度 复制代码 代码如下: /** * 输出$b相对于$a的相对路径($a) * 不限限制路径深度,没有做什么优化,只是实现功能 */function getPath($a, $b){ $aArr = explode('/', dirname($a)); $bArr = explode('/', dirname($b)); $aLen = count($aArr); $bLen = count($bArr); $len = max($aLen, $bLen); $

  • php绝对路径与相对路径之间关系的的分析

    php中好像不能像asp那样用"/"表示根目录,代之以$_SERVER['DOCUMENT_ROOT'],其它则相同:../表示向上一层../表示当前层.假如现在a/b/c/s.php要调用根目录下的 /bb/s2.txt,则: $RootDir = $_SERVER['DOCUMENT_ROOT']; $fireDir = "$RootDir/bb/s2.txt"; 或者:"../../../bb/s2.txt"表示向上返回到b再向上到a再向上

  • 使用PHP求两个文件的相对路径

    复制代码 代码如下: function compare($ph1,$ph2){    $ret = '';    $_f1Arr = explode("/",$ph1);    $_f2Arr = explode("/",$ph2); $f1 = array_pop($_f1Arr);    $f2 = array_pop($_f2Arr);    for($i=0;$i<count($_f1Arr);$i++){        if($_f1Arr[$i]

  • 一道求$b相对于$a的相对路径的php代码

    php面试题的题目: $a = '/a/b/c/d/e.php'; $b = '/a/b/12/34/c.php'; //计算出 $b 相对于 $a 的相对路径应该是 ../../c/d php面试题的答案: 复制代码 代码如下: function getRelative($a,$b) { $arr = explode("/",$a); $brr = explode("/",$b); $c = count($arr)-2; $d = count($brr)-2; /

  • php计算两个文件相对路径的方法

    本文实例讲述了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 getR

  • Java实现计算图中两个顶点的所有路径

    目录 前言 抽象数据模型 代码实现数据模型 计算两个顶点之间路径算法 总结 前言 最近公司的项目上有个需求,还挺有分享价值的,这边做个记录.需求大致如下,下面的一个流程图,点击条件线上选择的内容,必须是前面配置过的节点,如果不是,需要在保存的时候做强校验提示. 需求其实很明确,抽象出来就是获取图中两个顶点之间所有可达路径的顶点集合,大家可以思考下,该如何实现?这里面涉及到了数据结构中图相关知识,而数据结构算法也是本事最大的弱项,还是废了我一番工夫. 抽象数据模型 实际上,看到这个需求就很容易想到

  • JavaScript计算两个日期时间段内日期的方法

    本文实例讲述了JavaScript计算两个日期时间段内日期的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: /*************************  * 计算两个日期时间段内所有日期  *   * @param value1  *            开始日期 YYYY-MM-DD  * @param value2  *            结束日期  * return 日期数组  */  function dataScope(value1, value2

  • 批处理bat计算两个时间差

    这个是脚本代码[保存为etime.bat放在当前路径下即可: 复制代码 代码如下: :etime <begin_time> <end_time> <return> rem 所测试任务的执行时间不超过1天 // 骨瘦如柴版 setlocal&set be=%~1:%~2&set cc=(%%d-%%a)*360000+(1%%e-1%%b)*6000+1%%f-1%%c&set dy=-8640000 for /f "delims=: t

  • MSSQL 计算两个日期相差的工作天数的语句

    复制代码 代码如下: if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_WorkDay]') and xtype in (N'FN', N'IF', N'TF')) drop function [dbo].[f_WorkDay] GO --计算两个日期相差的工作天数 CREATE FUNCTION f_WorkDay( @dt_begin datetime, --计算的开始日期 @dt_end date

  • javaScript 计算两个日期的天数相差(示例代码)

    一:计算两个日期相差的天数 比如:   str1  =  "2002-01-20"   str2  =  "2002-10-11"  怎样用javaScript计算出str1与str2之间相差的天数?  复制代码 代码如下: <html>  <head>  <meta  http-equiv="Content-Type"  content="text/html;  charset=gb2312"&

  • JAVA计算两个日期相差的实例

    在Java开发物流或是其他功能的时候会用到两个日期 相差多天的数据,所以整理了一下备用.调用方式: 复制代码 代码如下: long date1 = getDateTime("20121201");//可改成自己的日期类型,但以 "20121212"这种格式 long date2 = getDateTime("20121212");   int day = dateInterval(date1, date2);   System.out.print

  • Java计算两个程序运行时间的实例

    一.获取系统当前时间 long startTime = System.currentTimeMillis(); //获取开始时间 doSomething(); //测试的代码段 long endTime = System.currentTimeMillis(); //获取结束时间 System.out.println("程序运行时间:" + (endTime - startTime) + "ms"); //输出程序运行时间 二.以纳秒为单位计算 // 第二种是以纳秒

  • java计算两个日期之前的天数实例(排除节假日和周末)

    如题所说,计算两个日期之前的天数,排除节假日和周末.这里天数的类型为double,因为该功能实现的是请假天数的计算,有请一上午假的为0.5天. 不够很坑的是每个日期都要查询数据库,感觉很浪费时间. 原则: 1.节假日存放在数据库中 实现步骤: 1.循环每个日期 2.判断每个日期是否为节假日或者为周末 3.若不是节假日和周末,天数+1 代码: public double calLeaveDays(Date startTime,Date endTime){ double leaveDays = 0;

  • 计算两个字符串最大公有子串

    背景 对算法一直应用的比较少,最近看到一些典型的算法想练练手,想看看到底有多么让人讨厌.其实发现算法都有一定的套路,一般并不是临时凭空想出来的,大都建立在一些已经存在的经典算法知识以及数据结构上.换句话来说,如果某些玩法之前未接触过,那么让你在短时间内临时想出来还是有一定难度的.这有点类似项目经验,如果曾经做过一个CRM系统,下次再碰到它时你就轻松很多,如果你挑战的是一个你从未遇到过的系统,你只能凭已有知识去强吃. 计算两个字符串最大公共子串 这个也是经常遇到到,给出两个任意长度的字符串,输出最

随机推荐