当前位置:首页 > PHP教程 > php文件操作 > 列表

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

发布:smiling 来源: PHP粉丝网  添加日期:2021-05-16 13:09:05 浏览: 评论:0 

这篇文章主要介绍了php计算两个文件相对路径的方法,涉及php操作字符串的技巧,具有一定参考借鉴价值,需要的朋友可以参考下。

本文实例讲述了php计算两个文件相对路径的方法,分享给大家供大家参考,具体如下:

一、问题:

写一个php函数算出两个文件的相对路径。例如$a="/a/b/c/d/e.php"; $b="/a/b/12/34/c.php",B相对于A的相对路径是什么?

二、解决方法:

  1. <?php 
  2. /** 
  3.  * 求$b相对于$a的相对路径 
  4.  * @param string $a 
  5.  * @param string $b 
  6.  * @return string 
  7.  */ 
  8. function getRelativePath ($a$b
  9.   $patha = explode('/'$a); 
  10.   $pathb = explode('/'$b); 
  11.   $counta = count($patha) - 1; 
  12.   $countb = count($pathb) - 1; 
  13.   $path = "../"
  14.   if ($countb > $counta) { 
  15.     while ($countb > $counta) { 
  16.       $path .= "../"
  17.       $countb --; 
  18.     } 
  19.   } 
  20.   // 寻找第一个公共结点 
  21.   for ($i = $countb - 1; $i >= 0;) { 
  22.     if ($patha[$i] != $pathb[$i]) { 
  23.       $path .= "../"
  24.       $i --; 
  25.     } else { 
  26. //判断是否为真正的第一个公共结点,防止出现子目录重名情况 
  27.       for ($j = $i - 1, $flag = 1; $j >= 0; $j --) { 
  28.         if ($patha[$j] == $pathb[$j]) { 
  29.           continue
  30.         } else { 
  31.           $flag = 0; 
  32.           break
  33.         } 
  34.       } 
  35.       if ($flag
  36.         break
  37.       else 
  38.         $i ++; 
  39.     } 
  40.   } 
  41.   for ($i += 1; $i <= $counta$i ++) { 
  42.     $path .= $patha[$i] . "/"
  43.   } 
  44.   return $path
  45. $a = "/a/c/d/e.php"
  46. $b = "/a/c.php"
  47. $path = getRelativePath($a$b); 
  48. echo $path

希望本文所述对大家的php程序设计有所帮助。

Tags: php计算文件相对路径

分享到: