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

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