8.5.3 字符串面试题3

8.5.3 字符串面试题3

四、写一个函数,算出两个文件的相对路径
如:
$a=’/a/b/c/d/e.php’
$b=’/a/b/12/34/c.php’
计算出$b相对于$a的相对路径应该是../../c/d

test.php

<?php
    function abspath($a, $b) {
        //第一步去除公共的目录结构
        //  $a = "/a/b/c/d/e.php";
        //  $b = "/a/b/12/34/c.php";
        $a = dirname($a);    //  /a/b/c/d
        $b = dirname($b);    //  /a/b/12/34
        $a = trim($a, "/");   //   a/b/c/d
        $b = trim($b, "/");   //   a/b/12/34
        $a = explode("/", $a);  //  array("a", "b", "c", "d")
        $b = explode("/", $b);  //  array("a", "b", "12", "34")
        // $a = explode("/", trim(dirname($a), "/"));
        $num = max(count($a), count($b));
        for($i=0; $i<$num; $i++) {
            if($a[$i]==$b[$i]) {
                unset($a[$i]);
                unset($b[$i]);
            }else{
                break;
            }
        }
        //$a = array("c", "d");
        //$b = array("12", "34");
        //第二步:回到同级目录, 进入另一个目录
         $path = str_repeat("../", count($b)).implode("/", $a);    //  ../../c/d
        return $path;
    }
    $a = "/a/b/c/d/e/w/f/e.php";
    $b = "/a/b/12/34/100/c.php";
    // ../../c/d
    echo abspath($a, $b);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. 关于诊断X线机准直器的作用,错误的是()。 (6.0 分) A. 显示照射野 B. 显示中心线 C. 屏蔽多...
    我们村我最帅阅读 13,736评论 0 5
  • 一、前言(可略过的废话和作者的感情经历) 为了给孩子们讲解一门关于色彩的课堂,特意转战场到色彩心理学这一块。自己觉...
    九梦岛主阅读 4,334评论 1 1
  • 月儿当空, 一切都在熟睡着, 梦精灵...
    时间淡化谁和谁阅读 2,325评论 0 2
  • 有些快乐和幸福只说给懂的人听。 ——写在最前面 我的人生在没有玩游戏之前,最喜欢的是读书写作,于是,那时候是公认的...
    倚岸听风阅读 2,744评论 0 0
  • 不要为明天忧虑,因为明天自有明天的忧虑。 “你要考研吗?” “嗯,我也要考研。” 考研或许成为了大多数大学生毕业时...
    和风姑娘阅读 5,709评论 6 10

友情链接更多精彩内容