php 两个文件之间的相对路径的计算方法

php 两个文件之间的相对路径的计算方法

比如:

文件A 的路径是 /home/web/lib/img/cache.php

文件B的路径是 /home/web/api/img/show.php

那么。文件A相对于文件B的路径是 ../../lib/img/cache.php,即文件B 訪问 文件A的相对路径。

function getRelativePath

<?php
/** 计算path1 相对于 path2 的路径,即在path2引用paht1的相对路径
* @param  String $path1
* @param  String $path2
* @return String
*/
function getRelativePath($path1, $path2){
    $arr1 = explode('/', $path1);
    $arr2 = explode('/', $path2);

    // 获取同样路径的部分
    $intersection = array_intersect_assoc($arr1, $arr2);

    $depth = 0;

    for($i=0,$len=count($intersection); $i<$len; $i++){
        if(!isset($intersection[$i])){
            $depth = $i;
            break;
        }
    }

    // 将path2的/ 转为 ../,path1获取后面的部分。然后合拼
    $tmp = array_merge(array_fill(0, count($arr2)-$depth-1, '..'), array_slice($arr1, $depth));

    $relativePath = implode('/', $tmp);

    return $relativePath;
}
?>

demo

<?php
$path1 = '/home/web/lib/img/cache.php';
$path2 = '/home/web/api/img/show.php';

echo getRelativePath($path1, $path2); // ../../lib/img/cache.php
?

>

版权声明:本文博主原创文章,博客,未经同意不得转载。

时间: 2024-12-19 14:19:51

php 两个文件之间的相对路径的计算方法的相关文章

php代码实现 两个目录之间的相对路径

/**  * 获取两个路径之间的相对路径  * @param $path1  路径1  * @param $path2  路径2  * @return 返回相对路径或者false(在同一个目录下)  */ function relativePath($path1, $path2) {     // 将各自的路径(不包含文件)存放到array数组中     $arr1 = explode('/', dirname($path1));     $arr2 = explode('/', dirname

php计算两个文件夹的相对路径

<?php include '../../c/e/one.php'; echo "\n"; echo 'this is two'; echo "\n"; $a = "/a/b/c/d/e.php"; $b = "/a/b/12/34/c.php"; $cnta = strlen($a); $cntb = strlen($b); $cnt = max($cnta,$cntb); echo $cnt,"\n&quo

用UltraEdit比較两个文件

在编写代码的过程中,经常碰到两个文件之间的逐行比較.特别是新代码与源码之间的文字比較,这里介绍用UltraEdit实现新代码与源码之间的比較方法. //源码:Bearing.mac FINISH /CLEAR /FILNAME,Bearing,1 /PREP7 /TITLE,3D model BLOCK,0,2.5,0,1,0,2 WPOFF,0,1,2 WPROT,0,-90,0 BLC4,0,0,2,1,2 WPCSYS,-1,0 WPOFF,0,3,2 CYL4,0,0,0,0,2,90,

两个文件比较之comm命令

comm命令可用于两个文件之间的比较.它有很多不错的选项可用来调整输出,以便我们执行交集.求差(difference)以及差集操作.? 交集:打印出两个文件所共有的行.? 求差:打印出指定文件所包含的且互不相同的那些行.? 差集:打印出包含在文件a中,但不包含在其他指定文件中的那些行. 假设现在有两个文件a和b,内容分别是:a(1,2,3),b(3,4,5).那么,对这两个文件进行操作的结果如下.交集:3.求差:1,2,4,5.差集(a):1,2. 需要注意的是comm必须使用排过序的文件作为输

用UltraEdit比较两个文件

在编写代码的过程中,常常碰到两个文件之间的逐行比较,特别是新代码与源代码之间的文字比较,这里介绍用UltraEdit实现新代码与源代码之间的比较方法. //源代码:Bearing.mac FINISH /CLEAR /FILNAME,Bearing,1 /PREP7 /TITLE,3D model BLOCK,0,2.5,0,1,0,2 WPOFF,0,1,2 WPROT,0,-90,0 BLC4,0,0,2,1,2 WPCSYS,-1,0 WPOFF,0,3,2 CYL4,0,0,0,0,2,

linux比较两个文件的不同(6/21)

cmp 命令:比较任意两个类型的文件,且吧结果输出到标准输出,默认文件相同不输出,不同的文件输出差异 必要参数 -c 显示不同的信息-l 列出所有的不同信息-s 错误信息不提示 选择参数 -i<字符数> 指定字符数目-v 显示版本信息--help 显示帮助信息 [函数的返回值] 0 :文件时同样的1 :文件是不同的>1:发生错误 comm将逐行比较已经排序的两个文件.显示结果包括3列: 第1列为只在file1中找到的行;第2列为只在file2中找到的行;第3列为两个文件的公用行. 参数

PHP两个文件的相对路径

1 /** 2 * relativePath 计算两个文件的相对路径 3 * @param file1 参作为考路径 4 * @param file2 相对于$file1的路径 5 */ 6 function relativePath($file1, $file2){ 7 $aArr = explode('/', $file1); //explode函数用于切分字符串,返回切分后的数组,此处用'/'切分字符串 8 $bArr = explode('/', $file2); 9 10 $aDiff

php获取两个文件的相对路径

例如:文件A 的路径是 /home/web/lib/img/cache.php 文件B的路径是 /home/web/api/img/temp/show.php 那么,文件A相对于文件B的路径是 ../../lib/img/cache.php function getRelativePath($urla,$urlb){ /*******第一步:获取两个文件的相同路径并去掉*****/ //获取路径名 $a_dirname=dirname($urla);   //$a_dirname=/home/w

Path,Files巩固,题目:从键盘接收两个文件夹路径,把其中一个文件夹中(包含内容)拷贝到另一个文件夹中

这个题目用传统的File,InputStream可以做,但是如果用Files,Path类做,虽然思路上会困难一些,但是代码简洁了很多,以下是代码: import java.io.IOException; import java.nio.file.FileVisitResult; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.Simple