首页 > 编程语言 >写一个函数,算出两个文件的相对路径,如b='/a/b/12/34/c.php';计算出a的相对路径应该是../../c/d

写一个函数,算出两个文件的相对路径,如b='/a/b/12/34/c.php';计算出a的相对路径应该是../../c/d

时间:2024-04-11 15:23:05浏览次数:17  
标签:12 .. echo 相对路径 path php releative

<?php
    function releative_path($path1,$path2){
        $arr1 = explode("/",dirname($path1));
        $arr2 = explode("/",dirname($path2));
 
        for ($i=0,$len = count($arr2); $i < $len; $i++) {
            if ($arr1[$i]!=$arr2[$i]) {
                break;
            }
        }
 
        // 不在同一个根目录下
        if ($i==1) {
            $return_path = array();
        }
 
        // 在同一个根目录下
        if ($i != 1 && $i < $len) {
            $return_path = array_fill(0, $len - $i,"..");
        }
 
        // 在同一个目录下
        if ($i == $len) {
            $return_path = array(&#39;./&#39;);
        }
 
        $return_path = array_merge($return_path,array_slice($arr1,$i));
        return implode(&#39;/&#39;,$return_path);
    }
 
    $a = &#39;/a/b/c/d/e.php&#39;;
    $b = &#39;/a/b/12/34/c.php&#39;;
    $c = &#39;/e/b/c/d/f.php&#39;;
    $d = &#39;/a/b/c/d/g.php&#39;;
 
    echo releative_path($a,$b);//结果是../../c/d
    echo "<br />";
    echo releative_path($a,$c);//结果是a/b/c/d
    echo "<br />";
    echo releative_path($a,$d);//结果是./
    echo "<br />";
?>

更多:http://www.shanhubei.com/archives/55200.html

标签:12,..,echo,相对路径,path,php,releative
From: https://www.cnblogs.com/shanhubei/p/18129314

相关文章

  • DC/DC高压电源模块线性可调升压变换器12V24V48V转0-1000V/0-2000V/0-3000V/0-4000VDC
    特点效率高达75%以上62*45*23mm标准封装单电压输出可直接焊在PCB上工作温度:-40℃~+75℃阻燃封装,满足UL94-V0要求温度特性好电压控制输出,输出电压随控制电压线性变化应用GRB 系列模块电源是一种DC-DC升压变换器。该模块电源的输入电压分为:10~18V、18~36V及36~72......
  • 第二节:C#12新语法(主构造函数、集合表达式、默认Lambda参数)
    一.        二.        三.         !作       者:Yaopengfei(姚鹏飞)博客地址:http://www.cnblogs.com/yaopengfei/声     明1:如有错误,欢迎讨论,请勿谩骂^_^。声     明2:原创博客请在转载......
  • 52 Things: Number 12: What is the elliptic curve group law?
    52Things:Number12:Whatistheellipticcurvegrouplaw?52件事:数字12:什么是椭圆曲线群定律?Thisisthelatestinaseriesofblogpoststoaddressthelistof '52ThingsEveryPhDStudentShouldKnow' todoCryptography:asetofquestionscompiled......
  • 算法模板 v1.12.2.20240411
    算法模板v1.1.1.20240115:之前历史版本已不可寻,创建第一份算法模板。v1.2.1.20240116:删除“编译”-“手动开栈”;删除“编译”-“手动开O优化”;修改“编译”-“CF模板”;删除“读写”;删除“图论”-“欧拉图”-“混合图”;删除“图论”-“可达性统计”;删除“数据类型”-“高精类”。......
  • 超大容量 | 瑞芯微RK3588J工业核心板新增16GB DDR + 128GB eMMC配置!
    作为瑞芯微的金牌合作伙伴,创龙科技在2023年9月即推出搭载瑞芯微旗舰级处理器RK3588J的全国产工业核心板——SOM-TL3588。 SOM-TL3588工业核心板是基于瑞芯微RK3588J/RK3588高性能处理器设计的四核ARMCortex-A76+四核ARMCortex-A55全国产工业核心板,Cortex-A76核心主频高达2.......
  • (Java)数据结构——排序(第一节)堆排序+PTA L2-012 关于堆的判断
    前言本博客是博主用于复习数据结构以及算法的博客,如果疏忽出现错误,还望各位指正。堆排序(HeapSort)概念堆排序是一种基于堆数据结构的排序算法,其核心思想是将待排序的序列构建成一个最大堆(或最小堆),然后将堆顶元素与最后一个元素交换,再将剩余元素重新调整为最大堆(或最小堆),重复......
  • CF1250A Berstagram 题解
    题面。题意描述的很清楚,这里就不多赘述。思路看题,对于每个\(a_i\),若\(b_j=a_i\),则将\(b_j\)与\(b_{j-1}\)的值调换(若\(j=1\),则序列不变)。一开始想的是最直接的暴力,复杂度为\(O(nm)\),虽然开了三秒的时限,但\(4\times10^{10}\)的数据明显不是三秒钟就能解决的,含恨倒在第......
  • CF121A Lucky Sum 题解
    题面。不好意思,又双把通过率拉低了。在CF上交了22次才过。这里给出不同的写法。思路规律其他题解写得都很好,这里不需要再讲述如何推出规律。预处理出前\(5000\)个符合要求的数(其实我也不知道处理多少个刚好够,就随便写了一个数)。接下来借用到一点分块思想,将整个\([l,r]\)......
  • 20211208葛洺君实验一—3
    任务详情0.查找各种标准的原始文档,研究学习(至少包含CryptoAPI,PKCS#11,GMT0016-2012,GMT0018-2012)1.总结这些API在编程中的使用方式2.列出这些API包含的函数,进行分类,并总结它们的异同3.以龙脉GM3000Key为例,写出调用不同接口的代码(CryptoAPI,PKCS#11,SKF接口),4.把运行截图加......
  • 20211226董子瑄
    加密API研究实验报告在当今信息安全领域,密码引擎API的标准和规范扮演着至关重要的角色。不同的标准和规范为开发者提供了可靠的基础,用于实现加密、解密和密钥管理等功能。接下来我将对微软的CryptoAPI、RAS公司的PKCS#11标准以及中国商用密码标准(GMT0016-2012和GMT0018-2012)进......