php 求两个文件的相对路径

网上看了一些这个题的一些解答方法,不过大多数就是对目前需求而定的,比如

$a = ‘/a/b/c/d/e.php‘;
$b = ‘/a/d/12/34/c.php‘;
getpath($a , $b );

public function getpath($a, $b)
{
     $aarr = explode(‘/‘, $a);
     $barr = explode(‘/‘, $b);
     $count = count($barr) - 2;
     $pathinfo = ‘‘;
     for($i = 1; $i <= $count; $i++){
         if($aarr[$i] == $barr[$i]){
              $pathinfo .= ‘../‘;
         }else{
              $pathinfo .= $barr[$i] . ‘/‘;
         }
     }
     echo $pathinfo;
}

如果改变一下

$a = ‘/a/b/c/d/e.php‘;
$b = ‘/a/b/c/34/c.php‘;那么就会有问题出现了,于是自己也写了一个简单的
    function getpath($a,$b)
    {
         $aarr = explode(‘/‘, $a);
         $barr = explode(‘/‘, $b);
         $flag = true;
         $count = count($barr) - 2;
         $pathinfo = ‘‘;
         for($i = 1; $i <= $count; $i++){
             if($flag && $aarr[$i] != $barr[$i] ){
                  $pathinfo .= str_repeat(‘../‘, $count-$i+1).$aarr[$i].‘/‘;
                  $flag = false;
              }elseif(!$flag){
                    $pathinfo .= $aarr[$i].‘/‘;
              }
         }
         return empty($pathinfo)? ‘./‘ : $pathinfo;
    }

    echo getpath($a,$b);
时间: 2024-08-07 08:04:38

php 求两个文件的相对路径的相关文章

一道PHP面试题,求两个文件的相对路径

首先原题是这样子的: 写一个函数,计算出两个文件的相对路径,如 $a = '/a/b/c/d/d.php',$b = '/a/b/1/2/c.php' 计算出的$b相对于$a的相对路径应该是:../../c/d 那么对于网上给出的答案,看了看貌似只能针对题目中给出的那个路径来计算,如果路径一变化,类似下面这样,那么那些程序好像没用了,当然有些是有用,但是还是报一些警告出来..... 例如: $a = '/a/b/c/d/e/f/g/h/e.php' $b = '/a/b/1/2/c.php' 再

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

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

利用sort和uniq求两个文件的并集,交集和差集

利用sort和uniq求两个文件的并集,交集和差集 并集:cat file1.txt file2.txt | sort | uniq > file.txt 交集:cat file1.txt file2.txt | sort | uniq -d >file.txt 差集:求file1.txt相对于file2.txt的差集,可先求出两者的交集file3.txt,然后在file1.txt中除去file3.txt即可. cat file1.txt file2.txt | sort | uniq -d

12.写一个函数,算出两个文件的相对路径

//计算出 c.php相对于e.php的相对路径应该是../../12/34 $a = '/a/b/c/d/e.php'; $b = '/a/b/12/34/c.php'; getpathinfo($a, $b); function getpathinfo( $a, $b ) { $a2array = explode('/', $a); $b2array = explode('/', $b); $pathinfo = ''; for( $i = 1; $i <= count($b2array)-

两个文件diff:交集差集并集

comm comm -12 <(sort 123|uniq) <(sort 234 | uniq) | wc -l [comm -12 表示取消第一列和第二列的输出,即只输出第三列] comm命令可以求两个文件的比较结果.默认输出三列,分别表示A-B,B-A 和 A交B. comm命令要求输入文件的内容必须是排序且唯一的 https://www.xuebuyuan.com/1273561.html grep 交集:grep -F -f file1 file2 B-A:grep -F -v -f

Linux 两个文件求交集、并集、差集

一.交集 sort a.txt b.txt | uniq -d 二.并集 sort a.txt b.txt | uniq 三.差集 a.txt-b.txt: sort a.txt b.txt b.txt | uniq -u b.txt - a.txt: sort b.txt a.txt a.txt | uniq -u 四.相关的解释 使用sort可以将文件进行排序,可以使用sort后面的玲玲,例如 -n 按照数字格式排序,例如 -i 忽略大小写,例如使用-r 为逆序输出等 uniq为删除文件中重

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

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 $