phpは2つのファイルの相対的な経路を求めます

8080 ワード

 1 function getpathinfo( $a, $b ) {

 2 

 3     $a2array = explode('/', $a);

 4 

 5     $b2array = explode('/', $b);

 6 

 7     $pathinfo = '';

 8 

 9     for( $i = 1; $i <= count($b2array)-2; $i++ ) {

10 

11         $pathinfo.=$a2array[$i] == $b2array[$i] ? '../' : $b2array[$i].'/';

12     }

13 print_R($pathinfo);

14 

15 }

16 $a = 'a/b/c/d/e.php';

17 $b = 'a/b/r/12/34/c.php';

18 getpathinfo($a, $b);
 1 function compara_path($path_a, $path_b) {

 2  //    .

 3  $array_a =explode('/', $path_a);

 4  $array_b =explode('/', $path_b);

 5  //           ,          .

 6  $file_a =array_pop($array_a); //array_pop()       array          

 7  $file_b =array_pop($array_b);

 8  //     .

 9  $a_len =count($array_a);

10  $b_len =count($array_b);

11  //           .

12  for ( $i =0; $i < $a_len; $i++ ) {

13   if ($array_a[$i] != $array_b[$i] ) {

14       break;

15   }

16  }

17  //      .

18  $com_path ="";

19  for ( $j =0; $j < $a_len - $i; $j++ ) {

20      $com_path .='../';

21  }

22  for ( $i; $i< $b_len; $i++ ) {

23      $com_path .=$array_b[$i] . '/';

24  }

25  $com_path .=$file_b;

26  return $com_path;

27 }

28 $a = 'a/b/c/d/e.php';

29 $b = 'a/b/r/12/34/c.php';

30 echo compara_path($a, $b);