php 算法之实现相对路径的实例

这篇文章主要介绍了php 算法之实现相对路径的实例的相关资料,希望通过本文能帮助到大家,让大家实现这样的功能,需要的朋友可以参考下。

php 算法之实现相对路径的实例,算出相对路径(相同的目录可以忽略用../ 或者 ./ 表示)实现代码:

  1. class Relatively{
  2. private function __construct(){
  3. }
  4. /**
  5. * 算出相对路径(相同的目录可以忽略用../ 或者 ./ 表示)
  6. * @param Strint $path1
  7. * @param Strint $path2
  8. * @return string
  9. */
  10. public static function relaroot($path1,$path2){
  11. $rearray=array();
  12. $arr1=explode('/', dirname($path1));
  13. $arr2=explode('/', dirname($path2));
  14. for($i=0,$len=count($arr2)-1;$i<$len;$i++){
  15. if($arr1[$i]!=$arr2[$i]){
  16. break;
  17. }
  18. if($i==1){
  19. $rearray=array();
  20. }
  21. if($i!=1 && $i<$len){
  22. $rearray=array_fill(0,$len-$i,'..');
  23. }
  24. if($i==$len){
  25. $rearray=array('./');
  26. }
  27. }
  28. $reroot=array_merge($rearray,array_slice($arr2, $i));
  29. return implode('/', $reroot);
  30. }
  31. }
  32. $path1="a/b/c/d/index.php";
  33. $path2="/a/b/12/34/index1.php";
  34. $a=Relatively::relaroot($path1, $path2);
  35. echo $a;