Sian 发表于 2016-1-2 20:49:15

PHP实现比较两个文件的相对位置

本帖最后由 Sian 于 2016-1-2 20:53 编辑

<?php
        $path1 = "c:/windows/system32/web/etc/file1.txt";
        $path2 = "c:/windows/system/calc.exe";
        function abspath($p1, $p2){
                $result = "";
                // 1、取路径分割字符串
                // c:/windows/system32/web/etc
                $p1 = dirname($p1);
                // ["c:", "windws", "system32", "web", "etc"]
                $p1 = explode("/", $p1);
                $p2 = dirname($p2);
                $p2 = explode("/", $p2);
                // 2、去掉重复部分
                $n = min(array(count($p1), count($p2)));
                for ($i = 0; $i < $n; $i++){
                        if($p1[$i] == $p2[$i]){
                                // 去掉数组中的"c:"、"windows"
                                unset($p1[$i]);
                                unset($p2[$i]);
                        }else{
                                break;
                        }
                }
                // 3、还原相对层级
                $result = str_repeat("../", count($p1));
                // 4、拼装相对位置
                $result .= implode("/", $p2);
                return $result;
        }
        // 输出"../../../system"
        // path2相对path1位置为向上3级目录再进入system目录
        echo abspath($path1, $path2);输出结果:
../../../system
页: [1]
查看完整版本: PHP实现比较两个文件的相对位置