首页 > 开发 > PHP > 正文

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

2024-05-04 23:32:30
字体:大 中 小
来源:转载
供稿:网友

这篇文章主要介绍了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程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表