企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
**题目要求:** 有两个文件 f1=/a/b/c/m.txt f2=/a/b/c/d/e/n.txt 结果应该为 ../../../m.txt **思路** 1.将两个转化为数组。 2.求出相同部分。 3.相同部分的长度为数组中相对路径的./个数 4.相对路径也就是所有的./+要求文件的其他路径 5.移除要求文件相同路径部分,并且用上面所求的相对路径符号替代。 6.所求数组再次转化为字符串。 **php代码实现** ~~~ <?php function get_relative_path($s1,$s2) { //将两个字符转化为数组 $arr1=explode("/",$s1); $arr2=explode("/",$s2); // 公共部分数组 注意 可能出问题 $arr3=array(); for ($i=0; $i < count($arr1); $i++) { if ($arr1[$i]==$arr2[$i]) { array_push($arr3,$arr1[$i]); continue; } else{ break; } } //深度 $sd=count($arr3); // 如果两个没有相同部分,直接 ..$s1 路径 if ($sd<=0) { return "..".$s1; } // 否则循环公共长度,按长度 设置../的长度 elseif ($sd>0) { $pqz=""; for ($j=0;$j<$sd;$j++) { $pqz=$pqz."../"; } // 移除前面相同部分 $narr1=array_splice($arr1,$sd); // 再次将移除了相同部分的数组转化为字符 $ns1=implode("/", $narr1); return $pqz.$ns1; } } $s2="/a1/b/c/m.txt"; $s1="/a/b/n.txt"; // ./n.txt // 求相对路径 在s1中返回s2的相对路径 echo get_relative_path($s2,$s1); // 文件2的深度-文件1的深度=相差的深度 ~~~