当前位置:首页 > 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. { 
  10.   $patha = explode('/', $a); 
  11.   $pathb = explode('/', $b); 
  12.   $counta = count($patha) - 1; 
  13.   $countb = count($pathb) - 1; 
  14.   $path = "../"; 
  15.   if ($countb > $counta) { 
  16.     while ($countb > $counta) { 
  17.       $path .= "../"; 
  18.       $countb --; 
  19.     } 
  20.   } 
  21.   // 寻找第一个公共结点 
  22.   for ($i = $countb - 1; $i >= 0;) { 
  23.     if ($patha[$i] != $pathb[$i]) { 
  24.       $path .= "../"; 
  25.       $i --; 
  26.     } else { 
  27. //判断是否为真正的第一个公共结点,防止出现子目录重名情况 
  28.       for ($j = $i - 1, $flag = 1; $j >= 0; $j --) { 
  29.         if ($patha[$j] == $pathb[$j]) { 
  30.           continue; 
  31.         } else { 
  32.           $flag = 0; 
  33.           break; 
  34.         } 
  35.       } 
  36.       if ($flag) 
  37.         break; 
  38.       else 
  39.         $i ++; 
  40.     } 
  41.   } 
  42.   for ($i += 1; $i <= $counta; $i ++) { 
  43.     $path .= $patha[$i] . "/"; 
  44.   } 
  45.   return $path; 
  46. } 
  47. $a = "/a/c/d/e.php"; 
  48. $b = "/a/c.php"; 
  49. $path = getRelativePath($a, $b); 
  50. echo $path; 

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

Tags: php计算文件相对路径

分享到: