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

前端之家收集整理的这篇文章主要介绍了php 计算两个文件相对路径实现方法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
PHP计算两个文件的相对路径感兴趣的小伙伴,下面一起跟随编程之家 jb51.cc的小编两巴掌来看看吧!
写一个PHP函数算出两个文件的相对路径。例如$a="/a/b/c/d/e.PHP"; $b="/a/b/12/34/c.PHP",B相对于A的相对路径是什么?
这是一个常见的PHP面试题
  1. /**
  2. * PHP计算两个文件的相对路径
  3. *
  4. * @param
  5. * @arrange 512-笔记网: jb51.cc
  6. **/
  7. <?PHP
  8. /**
  9. * 求$b相对于$a的相对路径
  10. * @param string $a
  11. * @param string $b
  12. * @return string
  13. */
  14. function getRelativePath ($a,$b)
  15. {
  16. $patha = explode('/',$a);
  17. $pathb = explode('/',$b);
  18. $counta = count($patha) - 1;
  19. $countb = count($pathb) - 1;
  20. $path = "../";
  21. if ($countb > $counta) {
  22. while ($countb > $counta) {
  23. $path .= "../";
  24. $countb --;
  25. }
  26. }
  27. // 寻找第一个公共结点
  28. for ($i = $countb - 1; $i >= 0;) {
  29. if ($patha[$i] != $pathb[$i]) {
  30. $path .= "../";
  31. $i --;
  32. } else { // 判断是否为真正的第一个公共结点,防止出现子目录重名情况
  33. for ($j = $i - 1,$flag = 1; $j >= 0; $j --) {
  34. if ($patha[$j] == $pathb[$j]) {
  35. continue;
  36. } else {
  37. $flag = 0;
  38. break;
  39. }
  40. }
  41. if ($flag)
  42. break;
  43. else
  44. $i ++;
  45. }
  46. }
  47. for ($i += 1; $i <= $counta; $i ++) {
  48. $path .= $patha[$i] . "/";
  49. }
  50. return $path;
  51. }
  52. $a = "/a/c/d/e.PHP";
  53. $b = "/a/c.PHP";
  54. $path = getRelativePath($a,$b);
  55. echo $path;
  56. /*** 来自编程之家 jb51.cc(jb51.cc) ***/

猜你在找的PHP相关文章