三里屯摇滚 发表于 2011-06-11 16:37

PHP面试题之[求相对路径]

PHP面试题之[求相对路径]

题目:写一个函数,算出两个文件的相对路径如 $a = '/a/b/c/d/e.php'; $b = '/a/b/12/34/c.php'; 计算出 $b 相对于 $a 的相对路径应该是 ../../c/d

答:<?php

function getRelative($a , $b)
{
$arr_a = explode("/" , $a) ;
$brr_b = explode("/" , $b) ;
$i = 1 ;
while (true) {
   if($arr_a[$i] == $brr_b[$i]) {
      $i ++ ;
   } else {
         break ;
    }
}

$c = count($brr_b) ;
$d = count($arr_a) ;
$e = ($c>$d)?$c:$d ;
$str1 = '' ;
$str2 = '' ;
for ($j = $i ;$j<$e ;$j++) {
   if(isset($arr_a[$j])) {
    if($j<($d-1)){
   $str1 .= $arr_a[$j] . "/" ;
    } else {
   $str1 .= $arr_a[$j] ;
    }
   
   }

   if(isset($brr_b[$j])) {
    $str2 .= "../" ;
   }
}
return $str2 . $str1 ;
}

$a = "/c/b/c/d/k/h/t/e.php" ;
$b = "/a/b/e/f/h.php" ;
$relative = getRelative($a,$b) ;
var_dump($relative);
?>运行结果:string(34) "../../../../../c/b/c/d/k/h/t/e.php"

end up!

辣椒封 发表于 2011-06-11 23:07

火速围观!牛人招PHP技术员-出得厅堂,下得厨房,进得洞房!有木有!!有木有!!

http://bbs.phpchina.com/thread-214382-1-1.html   这公司太有才了,做PHP的还要求会武功,找金庸大师学学吧,笑死俺了哈

亮图标 发表于 2011-06-12 16:22

火速围观!牛人招PHP技术员-出得厅堂,下得厨房,进得洞房!有木有!!有木有!!

http://bbs.phpchina.com/thread-214382-1-1.html   这公司太有才了,做PHP的还要求会武功,找金庸大师学学吧,笑死俺了哈

鼓励哇 发表于 2011-06-13 22:10

火速围观!牛人招PHP技术员-出得厅堂,下得厨房,进得洞房!有木有!!有木有!!

http://bbs.phpchina.com/thread-214382-1-1.html   这公司太有才了,做PHP的还要求会武功,找金庸大师学学吧,笑死俺了哈
页: [1]
查看完整版本: PHP面试题之[求相对路径]