PHP面试题

PHP面试题

代码

<?php
header("content-type:text/html;charset=utf-8");
$a='/a/b/c/d/e.php';
$b='/a/b/12/34/c.php';
  function getRelativePath($a, $b) {///a/b/12/34/../../c/d/e.php
    $returnPath = array(dirname($b));
    $arrA = explode('/', $a);
    $arrB = explode('/', $returnPath[0]);
    for ($n = 1, $len = count($arrB); $n < $len; $n++){
        if ($arrA[$n] != $arrB[$n]) {
            break;
        }
    }
    if ($len - $n > 0) {
        $returnPath =array_merge($returnPath, array_fill(1, $len - $n, '..'));
    }
    
    $returnPath = array_merge($returnPath,array_slice($arrA, $n));
    return implode('/', $returnPath);
}
echo getRelativePath($a, $b);
//输出结果:/a/b/12/34/../../c/d/e.php
echo "<hr/>";

function getRelativePath1($a,$b){
    $a_url = array(dirname($a));
    $b_url = array(dirname($b));
    $a_arr = explode('/',$a_url[0]);
    $b_arr = explode('/',$b_url[0]);
    $len    = count($a_arr);
    $art1 = '';
    $art2 = '';
    for($i=1;$i<$len;$i++){
        if($a_arr[$i]<>$b_arr[$i]){
            $art1.= '../';
            $art2.= $a_arr[$i].'/';
        }
    }
    return $art1.$art2;
}
echo getRelativePath1($a, $b);
//输出结果:../../c/d/
echo "<hr/>";


  function getpathinfo( $a, $b ) {
    $a2array    = explode('/', $a);
    $b2array    = explode('/', $b);
    $pathinfo   = '';
    for( $i = 1; $i <= count($b2array)-2; $i++ ) {
        $pathinfo.=$a2array[$i] == $b2array[$i] ? '../' : $b2array[$i].'/';
    }
    print_R($pathinfo);
}
getpathinfo($a, $b);
//输出结果:../../12/34/
echo "<hr/>";


$path="";
$path1 = explode('/',dirname($a));
$path2 = explode('/',dirname($b));
$aLen = count($path1);
$bLen = count($path2);
$maxLen = max($aLen,$bLen);
for($i = 1; $i < $maxLen; $i++){
if($path1[$i] != $path2[$i] && isset($path1[$i])){
if(isset($path2[$i]))$bUrl[]=$path2[$i];
$path.= "../";
}else{
$bUrl[]=$path2[$i];
}
}
echo $path.implode('/',$bUrl).'/'.basename($b);

//输出结果:../../a/b/12/34/c.php
?>

部分内容由编程无忧网整理发布

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值