计算两个文件的相对路径
来源:互联网 发布:python编译器是什么 编辑:程序博客网 时间:2024/04/30 10:22
今天遇到的一个问题。如果e.php的路径是/a/b/c/d/e.php c.php的路径是/a/b/c/f/g/c.php 计算c.php相对于e.php的路径。
算法比较简单,不一定是最优解,思路是找到两个路径最后相同的路径部分,之后用../填充e.php之后的路径,用原路径填充c.php之后的路径,合并而成一个相对路径,算法封装过,类如下:
class Path {
public $url1 = "/a/b/c/d/e.php";
public $url2 = "/a/b/c/f/g/c.php";
public function __construct($u1="/a/b/c/d/e.php",$u2="/a/b/c/f/g/c.php"){
$this -> url1 = $u1;
$this -> url2 = $u2;
}
public function __toString(){
return "show path from ".$this->url1." to ".$this->url2;
}
public function path_way(){
$arr1 = explode("/",$this -> url1);
$arr2 = explode("/",$this -> url2);
$str = "";
$point = 0;
//找到两个路径最后的相同位置
for($i=1;$i<(min(count($arr1),count($arr2))-1);$i++){
if($arr1[$i]!=$arr2[$i]){
$point = $i-1;
break;
}
}
//分别循环,将路径1相同位置后的路径用"../"填充
foreach($arr1 as $key => $value ){
if($key > $point && $key != (count($arr1)-1)){
$str .= "../";
}
}
//路径2相同位置后的路径用原路径填充
foreach($arr2 as $key => $value){
if($key > $point){
$str .= ($key != ($point+1)) ? "/".$value : $value;
}
}
return $str;
}
}
结果如下:
$path1 = new Path();
echo $path1->path_way();
输出 ../f/g/c.php
$path2 = new Path("/a/b/e/f/e.php", "/a/b/c/d/c.php");
echo $path2->path_way();
输出 ../../c/d/c.php
$path3 = new Path("/a/b/34/dad/e.php","/y/d/e/f/g/h/c.php");
echo $path3->path_way() ;
输出:../../../../y/d/e/f/g/h/c.php
- 计算两个文件的相对路径(php)
- 计算两个文件的相对路径
- 计算两个文件的相对路径
- php 计算两个文件的相对路径
- php计算两个文件的相对路径
- PHP 计算两个文件的相对路径
- 计算两个文件的相对路径的递归算法
- php 计算两个文件之间的相对路径方法
- php源码之计算两个文件的相对路径
- 一个php笔试题:两个文件相对路径的计算
- 计算两个路径的相对路径
- 两个文件的相对路径
- 两个文件的相对路径
- php求两个文件的相对路径
- 算出两个文件的相对路径
- 求两个文件的相对路径
- 计算出两个文件的相对路径
- php求两个文件的相对路径
- Visual C++ 2010新功能之auto关键字
- #!/usr/bin/env python与#!/usr/bin/python的区别
- IOS线程数据篇6之数据持久化plist、preference、NSKeyedArchiver(NSCoding)、Core Data、SQLite3
- 每个程序员都该知道的10大编码原则
- jpg在线转换成pdf
- 计算两个文件的相对路径
- 程序员面试注意几点就够了
- constraintsWithVisualFormat
- CentOS5.4下配置PXE+Kickstart无人值守安装
- 2014福布斯中国富豪榜:除了BAT,IT领域企业家“大举侵入”
- (七)立体标定与立体校正 【计算机视觉学习笔记--双目视觉几何框架系列】
- javascript eval加密和解密源码
- Eclipse去除js验证错误
- c++中的list应用